NuGet排除内容项目引用



我想创建一个NuGet包,其中包含一些内容文件,我希望这些文件被添加到项目中,但不被项目引用,因此它们不会被编译。我该怎么做?

感谢

编辑nuspec文件,放入对文件的引用,如下所示:

<?xml version="1.0"?>
<package>
  <metadata>
    ...
  </metadata>
  <files>
     ...
    <file src="MyFirstContentFile.txt" target="content" />
    <file src="MySecondContentFile.cs" target="content" />
     ...
  </files>
</package>

target="content"位是将文件复制到项目中的神奇之处。

现在,如果要导入到项目中的文件是代码文件(例如.cs文件),并且不希望对其进行编译,则需要设置这些文件的构建操作。要做到这一点,你需要在install.ps1文件上做一些工作(如果你还没有,请创建一个,不要忘记在target="tools"的文件部分引用该文件):

param($installPath, $toolsPath, $package, $project)
$file1 = $project.ProjectItems.Item("MyFirstContentFile.txt")
$file2 = $project.ProjectItems.Item("MySecondContentFile.cs")
# set 'BuildAction' to 'Content'
$copyToOutput1 = $file1.Properties.Item("BuildAction")
$copyToOutput1.Value = 2
$copyToOutput2 = $file2.Properties.Item("BuildAction")
$copyToOutput2.Value = 2

有关BuildAction枚举的可能值,请参阅以下链接。http://msdn.microsoft.com/en-us/library/aa983962(VS.71).aspx

最新更新