标题说明了一切。我想在安装 NuGet 包期间嵌套一些文件,但无法使用 PowerShell 脚本,因为它们将不再运行 (see here) .
还有其他方法可以实现这一目标吗?
<小时/>更新:我所说的嵌套是指像 *.resx
和*.Designer.cs
或*.xaml
和代码隐藏文件 *.xaml.cs
。我知道我可以通过添加 <DependentUpon>
来实现这一点*.csproj 文件中的元素,但我不知道如何在不使用 PowerShell 的情况下添加该元素。
更新2: init.ps1 runs the first time a package is installed in a solution 。但这并不能解决问题。当包安装到项目中时,我需要运行脚本,就像 install.ps1
一样已运行至 NuGet3。
UPDATE3:我想要做的是将3个文件添加到Properties
中目标项目的文件夹( Resources.resx
、 Resources.tt
和 Resources.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>
当这些文件添加到项目中时,我希望嵌套在 *.csproj
中文件,并且不会通过单独的 *.props
发生如果可能的话,归档。
最佳答案
包可以通过使用包中的 .props 文件将此类 MSBuild 项添加到项目中。它将包含与您放入 .csproj 文件中的内容相同的内容。
这样做的缺点是用户无法修改内容。如果您需要修改用户的实际项目文件并将内容复制到项目文件夹,则必须在包中包含 .targets 文件并在目标上设置 BeforeTargets="Build"。这将使您有机会在构建之前运行并根据需要进行更改。
构建文件夹适用于packages.config 和PackageReference (NETCore SDK) 项目。您可以在这里找到更多信息:https://learn.microsoft.com/en-us/nuget/create-packages/creating-a-package#including-msbuild-props-and-targets-in-a-package
关于powershell - 在不使用 PowerShell 的情况下在 Nuget 包中嵌套文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46487381/