2

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

为了使我的 NuGet 包在使用 aproject.json或的项目上工作,我可以使用替代方案或解决方法packages.config吗?

4

1 回答 1

2

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

在 nuget 包中将内容文件设置为“复制本地:始终”

您可以将文件放在NuGet 包内的Content 目录中。

在您的 .nuspec 文件中:

<file src="css\mobile\*.css" target="content\css\mobile" />

当您将其安装到您的项目中时,它会将 css\mobile 目录添加到您的项目以及该目录中的文件。

但是,这只会将文件添加到项目中。为了将它们复制到您的输出目录,您需要使用 PowerShell 脚本来修改项目项的复制本地信息。

另一种可能更好的方法是使用自定义MSBuild .targets 文件。这将作为导入添加到您的项目中,然后在您的 .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>
于 2016-05-28T08:39:21.630 回答