从另一个Nuget包引用的Nuget包复制内容文件

时间:2018-09-21 14:37:27

标签: c# .net-core nuget

我想从引用的Nuget包中获取文件到我的输出文件夹中。程序包是在.NET Standard项目上使用Visual Studio 2017生成的,具有新的csproj文件格式并启用了“ GeneratePackageOnBuild”。

例如,我有两个Nuget程序包(A和B),而程序包B取决于A。程序包A包含一个内容文件,例如配置文件。在这些程序包旁边,我有一个包含程序包B的应用程序。此应用程序使用程序包A和B中的内容,因此需要页面A中的文件。

NugetPackageA
|- ClassA.cs
|- RequiredFile.txt

NugetPackageB
|-Dependencies
  |- Nuget
    |- NugetPackageA
|- ClassB.cs

Application
|-Dependencies
  |- Nuget
    |- NugetPackageB
|- Program.cs

我所做的是在项目文件中启用文件打包(基于link):

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
  </PropertyGroup>

  <ItemGroup>
    <Content Include="RequiredFile.txt">
      <Pack>true</Pack>
      <PackageCopyToOutput>true</PackageCopyToOutput>
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
      <PackagePath>contentFiles\any\any\;content\any\any\</PackagePath>
    </Content>
  </ItemGroup>

</Project>

如果我打开Nuget包和nuspec文件,我会看到文件已正确打包,并且属性似乎还可以:

<?xml version="1.0" encoding="utf-8"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
  <metadata>
    <id>NugetPackageA</id>
    ...
    <contentFiles>
      <files include="any/any/RequiredFile.txt" buildAction="Content" copyToOutput="true" />
    </contentFiles>
  </metadata>
</package>

当应用程序直接依赖于NugetPackageA时,文件已正确添加到项目中并复制到输出目录。

所以现在我看到了这些解决方法;

  1. 直接添加Nuget引用
  2. 制作一个脚本,尝试在$(NuGetPackageFolders)中找到正确的软件包和版本,然后手动复制文件
  3. 将NugetPackageB更改为还包含RequiredFile.txt

还有其他人对此有解决方案吗?

谢谢。

0 个答案:

没有答案