对于使用 packages.config 的项目,是否有 contentFiles 的替代方案?

Is there an alternative to contentFiles with projects that use packages.config?

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

的项目时,内容文件不会复制到我的构建输出中

我是否可以使用替代方法或解决方法来使我的 NuGet 包在使用 project.jsonpackages.config 的项目上运行?

在 Whosebug 上快速搜索会发现以下问题,我认为它涵盖了您的要求:

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>