C# 如何告诉nuget将包资源文件添加为链接,而不是将它们复制到项目目录中 简介(如何将资源打包到nuget包中)
要将一些资源文件打包到nuget包中,通常会执行以下操作 将所有资源文件放入nuget包的C# 如何告诉nuget将包资源文件添加为链接,而不是将它们复制到项目目录中 简介(如何将资源打包到nuget包中),c#,.net,nuget,C#,.net,Nuget,要将一些资源文件打包到nuget包中,通常会执行以下操作 将所有资源文件放入nuget包的content\目录中。这将由.nuspec文件中的以下行指定: <files> <file src="Project\bin\Release\script.js" target="content\js\script.js" /> <files> 在包安装过程中,另一个项目.csproj被注入标签: <Content Include="js\script.js
content\
目录中。这将由.nuspec
文件中的以下行指定:
<files>
<file src="Project\bin\Release\script.js" target="content\js\script.js" />
<files>
在包安装过程中,另一个项目.csproj
被注入标签:
<Content Include="js\script.js" />
我宁愿避免的暴力解决方案
现在,我能想到的一个“以艰难的方式”解决方法是:
- 未将资源文件置于
下,因此不会自动添加它们内容\
- 编写
脚本来破解csproj文件结构并手动添加必要的XML片段Install.ps1
- 我的所有nuget软件包在其
中都需要相同的脚本片段Install.ps1
- 在安装我的软件包时,VisualStudio中会出现令人讨厌的“项目重新加载提示”
- 将您的资源放在NuGet包的内容目录之外(正如您已经建议的那样)
- 在install.ps1中使用PowerShell添加文件链接李>
- NuGet支持向指向MSBuild.props和/或.targets文件的项目中添加导入语句。因此,您可以将资源放入NuGet包的tools目录中,并从自定义MSBuild.props/.targets文件中引用它们
另一个需要更多工作的选项是修改NuGet以支持您想要做的事情。谢谢!我最终通过install.ps1和EnvDTE使用powershell实现了这一点。哦,是的。你可以在这里看到它的作用:
<Content Include="js\script.js" />
<Content Include="packages\Project.1.0.0\content\js\script.js">
<Link>js\script.js</Link>
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>