我有一个nuget包,其中包含我希望在用户安装我的包时将其复制到构建输出的内容。在NuGet v3.3中支持:NuGet ContentFiles Demystified。但是,它仅适用于使用project.json
的项目。当我有一个使用packages.config
的项目时,contentFiles不会复制到我的构建输出。
我是否可以使用替代或解决方法,以使我的NuGet包适用于使用project.json
或packages.config
的项目?
答案 0 :(得分:1)
快速搜索StackOverflow会显示以下问题,我认为这个问题涵盖了您的要求:
Set content files to "copy local : always" in a nuget package
您可以将文件放在NuGet包内的Content directory内。
在.nuspec文件中:
<file src="css\mobile\*.css" target="content\css\mobile" />
当你将它安装到你的项目中时,它会将css \ mobile目录添加到你的项目和该目录中的文件。
但是,只会将文件添加到项目中。为了将它们复制到输出目录,您需要使用PowerShell脚本来修改项目项的本地信息。
另一种可能更好的方法是使用自定义MSBuild .targets file。这将作为项目的导入添加,然后在.targets文件中,您可以添加所需的文件,并指定副本直接输出信息,就像它是项目的一部分一样。 NuGet .nupkg文件内容:
\build
\Net45
\MyPackage.targets
\Foo.txt
MyPackage是上面NuGet包的id。
在.targets文件中指定文件(例如Foo.txt)。
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<None Include="Foo.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>