powershell - 在不使用 PowerShell 的情况下在 Nuget 包中嵌套文件

标签 powershell nuget nuget-package

标题说明了一切。我想在安装 NuGet 包期间嵌套一些文件,但无法使用 PowerShell 脚本,因为它们将不再运行 (see here) .

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

<小时/>

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

Screenshot of nested files in solution explorer

<小时/>

更新2: init.ps1 runs the first time a package is installed in a solution 。但这并不能解决问题。当包安装到项目中时,我需要运行脚本,就像 install.ps1 一样已运行至 NuGet3。

<小时/>

UPDATE3:我想要做的是将3个文件添加到Properties中目标项目的文件夹( Resources.resxResources.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>

当这些文件添加到项目中时,我希望嵌套在 *.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/

相关文章:

powershell - 在 Powershell 2.0 中清除公共(public) MSMQ 队列

visual-studio - NuGet 退出,代码为 3

azure - 使用云配置(Service Definition.csdef)文件的配置创建 Nuget 包

c#-4.0 - 使用 GUI 从 csproj 创建 nuspec

powershell - 如何使用 nuget.org 中的 OneGet/install-package 安装包

powershell - $ args [0]不接受完整参数

java - 使用Powershell用tomcat servlet-api.jar编译java

powershell - 通过引用访问列表的问题

c# - 从 csx 脚本引用 NuGet 包

nuget 包将 web.config 重命名为 web.config.transform