在没有PowerShell的情况下将文件嵌套在Nuget包中

Seb*_*ber 8 powershell nuget nuget-package

标题说明了一切.我有一些文件,我想在安装NuGet包时嵌套但不能使用PowerShell脚本,因为它们不再运行(见这里).

有没有其他方法可以实现这一目标?


更新:嵌套我的意思是*.resx和/ *.Designer.cs*.xaml代码隐藏文件*.xaml.cs.我知道我可以通过<DependentUpon>在*.csproj文件中添加一个元素来实现这一点,但我不知道如何在不使用PowerShell的情况下添加该元素.

解决方案资源管理器中嵌套文件的屏幕截图


UPDATE2: init.ps1在解决方案中第一次安装软件包时运行.但这不会削减它.当程序包安装到项目中时,我需要运行脚本,就像install.ps1运行到NuGet3一样.


更新3:我想要做的是将3个文件添加到Properties目标项目的文件夹中(Resources.resx,Resources.ttResources.Designer.cs).它们是通常资源实施的替代品.这些文件在添加到项目中时由nuget包安装.

这是将*.nuspec文件添加到Content包文件夹的文件的一部分.由于其中只有一个实际上是内容(其他内容分别是嵌入式资源和编译),因此能够相应地设置其构建操作,但一次只能一步.

<files>
  <file src="Properties\Resources.resx" target="content\Properties\Resources.resx" />
  <file src="Properties\Resources.tt.pp" target="content\Properties\Resources.tt.pp" />
  <file src="Properties\Resources.Designer.cs" target="content\Properties\Resources.Designer.cs" />
</files>
Run Code Online (Sandbox Code Playgroud)

当这些文件被添加到项目中时,我希望在*.csproj文件中嵌套,而不是通过单独的*.props文件发生,如果这是某种可能的话.

Jus*_*ten 1

包可以通过使用包中的 .props 文件将此类 MSBuild 项添加到项目中。它将包含与放入 .csproj 文件中的内容相同的内容。

这样做的缺点是用户无法修改内容。如果您需要修改用户的实际项目文件并将内容复制到项目文件夹,则必须在包中包含 .targets 文件并在目标上设置 BeforeTargets="Build"。这将使您有机会在构建之前运行并根据需要进行更改。

构建文件夹适用于packages.config 和PackageReference (NETCore SDK) 项目。您可以在这里找到更多信息:https://learn.microsoft.com/en-us/nuget/create-packages/creating-a-package#include-msbuild-props-and-targets-in-a-package