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

时间:2017-09-29 10:56:13

标签: powershell nuget nuget-package

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

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

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

Screenshot of nested files in solution explorer

UPDATE2: init.ps1 runs the first time a package is installed in a solution。但这不会削减它。当程序包安装到项目中时,我需要运行脚本,就像install.ps1运行到NuGet3一样。

UPDATE3 :我想要做的是将3个文件添加到目标项目的Properties文件夹中(Resources.resxResources.tt和{{1 }})。它们是通常资源实施的替代品。这些文件在添加到项目中时由nuget包安装。

这是Resources.Designer.cs文件的一部分,它将它们添加到包的*.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> 文件中嵌套,如果在某种程度上可能,则不会通过单独的*.csproj文件进行嵌套。

1 个答案:

答案 0 :(得分:1)

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

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

build文件夹适用于packages.config和PackageReference(NETCore SDK)项目。您可以在此处找到更多相关信息:https://docs.microsoft.com/en-us/nuget/create-packages/creating-a-package#including-msbuild-props-and-targets-in-a-package