不向 Visual Studio 项目添加文件的 NuGet 包

3
我刚开始使用NuGet并试图弄清楚它。我可能正在尝试使用NuGet进行某些不适合的事情,但我希望有人能给我一些提示。
我的问题是:我正在尝试创建一个包含不同文件的软件包。这些文件是不同类型的(图片、文本文件等)。我希望该软件包能够正常工作,以便将文件添加到我的应用程序根目录中,但不包括在我的Visual Studio项目中。我已经尝试过了,但文件总是被添加到项目中。是否有解决方法?
谢谢。
2个回答

6

目前还没有直接的支持。无论你将什么放在内容文件夹中,都会在安装包被安装时添加到项目中。

然而,你可以使用一个 install.ps1 脚本来实现这个效果,例如:

  • 将所有想要最终出现在网站根目录下的文件放入包中的某个文件夹中
  • 在 install.ps1 中使用 PowerShell 将该文件夹中的所有内容复制到你的网站根目录下,这可能只需要一个命令。

3
您可以将文件放在NuGet包中的另一个文件夹(而非content文件夹)中,并在NuGet包中添加一个.targets文件来在构建时复制文件。
MyProject.nuget文件:
...
<files>
    <file src="bin\$configuration$\$id$.pdb" target="lib\net45"/>
    <file src="C:\MyResourceFolder\**" target="resources"/>
    <file src="MyProject.targets" target="build"/>
  </files>
</package>

MyProject.targets文件:

<?xml version="1.0"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <ItemGroup>
    <None Include="$(MSBuildThisFileDirectory)\..\resources\**">
      <Link>\Recources\%(RecursiveDir)\%(Filename)%(Extension)</Link>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
   </None>
  </ItemGroup>
</Project>

当您构建最终应用程序时,文件将被复制到构建目标文件夹中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接