我试图在C#.Net项目中获取内容文件,该项目正在打包到Nuget包中以展平包含的文件夹。基于this page,似乎可以使用flatten属性。
但我想使用VS2017内置的新MSBuild Nuget包装。基于this page,我应该可以使用<PackageFlatten>
标记实现相同的目标,但我无法使其发挥作用。
这是一个演示问题的基本项目文件。我期待文件夹层次结构下的单个内容文件。\ RemoveMe \ ContentFile.txt最终位于。\ content \ ContentFile.txt下的Nuget包中 - 即没有文件夹RemoveMe。但我仍然得到这个子文件夹。
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
</PropertyGroup>
<ItemGroup>
<Content Include="RemoveMe\ContentFile.txt">
<PackageFlatten>true</PackageFlatten>
</Content>
</ItemGroup>
</Project>
答案 0 :(得分:1)
使用Visual Studio 2017为Nuget包中的内容文件指定PackageFlatten
对我而言,这应该是关于参数flatten="true"
的问题。根据文件NuGet ContentFiles Demystified:
展平 - 文件是否应全部传递到项目的根文件夹,还是应保留打包的文件夹结构。默认值为false,表示应创建(如有必要)并保持不变他们在pacakge中的TFM文件夹之后的结构。
因此,如果我们在.nuspec文件中设置此参数flatten="true"
,然后打包此.nuspec,将generate nuget包安装到项目中,该文件应该传递到项目的根文件夹。但是在将这个包安装到项目之后,仍然在子文件夹RemoveMe中的那个文件不在根文件夹中。
我还测试了其他参数buildAction="content" copyToOutput="false"
,它们都可以正常工作。
因此,对于参数flatten="true"
应该是一个问题,我提交this issue on GitHub,您可以跟踪此问题。