是否有一个替代contentFiles与项目使用packages.config?

时间:2016-05-27 22:33:22

标签: nuget nuget-package nuspec project.json packages.config

我有一个nuget包,其中包含我希望在用户安装我的包时将其复制到构建输出的内容。在NuGet v3.3中支持:NuGet ContentFiles Demystified。但是,它仅适用于使用project.json的项目。当我有一个使用packages.config的项目时,contentFiles不会复制到我的构建输出。

我是否可以使用替代或解决方法,以使我的NuGet包适用于使用project.jsonpackages.config的项目?

1 个答案:

答案 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>