Nuget 包在安装时从其参考项目复制静态文件
A Nuget package copies the static files from its reference project when installed
我有一个名为“A”的项目,它包含一些静态文件(如 dll 或其他)。
csproj如下
<ItemGroup>
<ContentWithTargetPath Include="files\MyDll.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<TargetPath>MyDll.dll</TargetPath>
</ContentWithTargetPath>
</ItemGroup>
<ItemGroup>
<Content Include="files\MyDll.dll">
<PackageCopyToOutput>true</PackageCopyToOutput>
<PackagePath>contentFiles\any\any\;content\any\any</PackagePath>
</Content>
</ItemGroup>
所以根据内容,无论我使用项目引用还是包引用来引用A,静态文件都会被复制到输出文件夹。
然后我有一个名为“B”的项目,它使用项目引用来引用 A。
B的csproj部分如下:
<ItemGroup>
<ProjectReference Include="..\..\A\A.csproj"/>
</ItemGroup>
现在我将 B 做成一个 Nuget 包,并被 C 项目引用(包引用)。
但是A的静态文件似乎没有出现在C的输出文件夹中
有什么办法可以处理吗?
谢谢!
contentFiles 节点无法从 nuget 依赖项 A 进入主项目 C。而且这个问题我测试了好几次。
似乎 contentfFiles 节点无法将依赖项从 nuget 转移到主项目。
一个 解决方法是另外将 nuget A 安装到 Project C 中。
============================
和 解决方法可能不太方便,或者您可以在项目 B 中添加这些,这样我们就不会另外安装 nuget A:
1) 在项目 B.csproj
文件中添加这些:
<ItemGroup>
<None Include="$(TargetDir)\MyDll.dll">
<Pack>true</Pack>
<PackagePath>contentFiles\any\any\;content\any\any</PackagePath>
<PackageCopyToOutput>true</PackageCopyToOutput>
</None>
</ItemGroup>
然后,重新打包您的项目 B。
我有一个名为“A”的项目,它包含一些静态文件(如 dll 或其他)。
csproj如下
<ItemGroup>
<ContentWithTargetPath Include="files\MyDll.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
<TargetPath>MyDll.dll</TargetPath>
</ContentWithTargetPath>
</ItemGroup>
<ItemGroup>
<Content Include="files\MyDll.dll">
<PackageCopyToOutput>true</PackageCopyToOutput>
<PackagePath>contentFiles\any\any\;content\any\any</PackagePath>
</Content>
</ItemGroup>
所以根据内容,无论我使用项目引用还是包引用来引用A,静态文件都会被复制到输出文件夹。
然后我有一个名为“B”的项目,它使用项目引用来引用 A。
B的csproj部分如下:
<ItemGroup>
<ProjectReference Include="..\..\A\A.csproj"/>
</ItemGroup>
现在我将 B 做成一个 Nuget 包,并被 C 项目引用(包引用)。
但是A的静态文件似乎没有出现在C的输出文件夹中
有什么办法可以处理吗?
谢谢!
contentFiles 节点无法从 nuget 依赖项 A 进入主项目 C。而且这个问题我测试了好几次。
似乎 contentfFiles 节点无法将依赖项从 nuget 转移到主项目。
一个 解决方法是另外将 nuget A 安装到 Project C 中。
============================
和 解决方法可能不太方便,或者您可以在项目 B 中添加这些,这样我们就不会另外安装 nuget A:
1) 在项目 B.csproj
文件中添加这些:
<ItemGroup>
<None Include="$(TargetDir)\MyDll.dll">
<Pack>true</Pack>
<PackagePath>contentFiles\any\any\;content\any\any</PackagePath>
<PackageCopyToOutput>true</PackageCopyToOutput>
</None>
</ItemGroup>
然后,重新打包您的项目 B。