如何在我的 nuspec 文件中设置 'copy to output directory' 属性?
How can I set the 'copy to output directory' property in my nuspec file?
请考虑以下 nuspec 文件:
<?xml version="1.0"?>
<package >
[SOME METADATA]
<files>
<file src="bin\x64$configuration$\GR*.filetype" target="content\" />
</files>
</package>
以上已成功打包以 'GR' 开头的文件类型文件,并将它们添加到我的新参考解决方案中。
问题是我希望这些文件总是被复制到输出目录。我可以通过 nuspec 执行此操作而无需手动修改我的新解决方案中的属性吗?
How can I set the 'copy to output directory' property in my nuspec file?
Martin 指出了正确的方向,我以前也有同样的要求,kjbartel`s answer 对我很好。我post这里回答的比较详细,希望能给你一些帮助。
要解决此问题,您可以按照以下步骤操作:
在你的项目文件夹中添加一个xx.targets文件,确保目标文件的名称与包id同名(TestDemo是我的包ID,所以名称.targets 是 TestDemo.targets).
在目标文件中添加以下代码:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="$(MSBuildThisFileDirectory)GRabc.txt">
<Link>GRabc.txt</Link>
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>
注意:“$(MSBuildThisFileDirectory)”的路径应该是相对路径,不熟悉的可以使用绝对路径。
在 nuspec 文件中,将所需文件与目标文件一起添加到 Build 目录。
<files>
<file src="bin\x64\Debug\GR*.txt" target="Build\" />
<file src="TestDemo.targets" target="Build\" />
<file src="bin\Debug\TestDemo.dll" target="lib2" />
</files>
打包这个包,然后添加到其他项目上测试,可以正常使用。
已接受的答案对非内容文件很有用,因为它在安装时不会链接到项目。
但是,我需要有一个设置 xml 文件,该文件将被添加到项目中,nuget 包用户可以编辑它,包 dll 将从中加载编辑后的 xml 文件输出目录。
由于内容文件不会被复制到构建目录,我不得不使用 .targets
文件将内容文件复制到输出目录。
nuspec
文件
<file src="TestDemo.targets" target="build"/>
<file src="Settings.xml" target="content/Configuration"/>
.targets
文件(文件名必须与包 ID 相同)
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="AfterBuild">
<Copy SourceFiles="$(ProjectDir)Configuration\Settings.xml" DestinationFolder="$(TargetDir)Configuration\" ContinueOnError="true" />
</Target>
</Project>
请考虑以下 nuspec 文件:
<?xml version="1.0"?>
<package >
[SOME METADATA]
<files>
<file src="bin\x64$configuration$\GR*.filetype" target="content\" />
</files>
</package>
以上已成功打包以 'GR' 开头的文件类型文件,并将它们添加到我的新参考解决方案中。
问题是我希望这些文件总是被复制到输出目录。我可以通过 nuspec 执行此操作而无需手动修改我的新解决方案中的属性吗?
How can I set the 'copy to output directory' property in my nuspec file?
Martin 指出了正确的方向,我以前也有同样的要求,kjbartel`s answer 对我很好。我post这里回答的比较详细,希望能给你一些帮助。
要解决此问题,您可以按照以下步骤操作:
在你的项目文件夹中添加一个xx.targets文件,确保目标文件的名称与包id同名(TestDemo是我的包ID,所以名称.targets 是 TestDemo.targets).
在目标文件中添加以下代码:
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <ItemGroup> <None Include="$(MSBuildThisFileDirectory)GRabc.txt"> <Link>GRabc.txt</Link> <CopyToOutputDirectory>Always</CopyToOutputDirectory> </None> </ItemGroup> </Project>
注意:“$(MSBuildThisFileDirectory)”的路径应该是相对路径,不熟悉的可以使用绝对路径。
在 nuspec 文件中,将所需文件与目标文件一起添加到 Build 目录。
<files> <file src="bin\x64\Debug\GR*.txt" target="Build\" /> <file src="TestDemo.targets" target="Build\" /> <file src="bin\Debug\TestDemo.dll" target="lib2" /> </files>
打包这个包,然后添加到其他项目上测试,可以正常使用。
已接受的答案对非内容文件很有用,因为它在安装时不会链接到项目。
但是,我需要有一个设置 xml 文件,该文件将被添加到项目中,nuget 包用户可以编辑它,包 dll 将从中加载编辑后的 xml 文件输出目录。
由于内容文件不会被复制到构建目录,我不得不使用 .targets
文件将内容文件复制到输出目录。
nuspec
文件
<file src="TestDemo.targets" target="build"/>
<file src="Settings.xml" target="content/Configuration"/>
.targets
文件(文件名必须与包 ID 相同)
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="AfterBuild">
<Copy SourceFiles="$(ProjectDir)Configuration\Settings.xml" DestinationFolder="$(TargetDir)Configuration\" ContinueOnError="true" />
</Target>
</Project>