2017-11-16 3 views
0

Nugetパッケージに含まれるC#.Netプロジェクトでコンテンツファイルを取得しようとしています。 this pageに基づいて、これはflatten属性で可能と思われます。Visual Studioを使用してNugetパッケージのコンテンツファイルにPackageFlattenを指定します。2017

しかし、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> 
+1

同じ結果が得られました。これは 'PackageFlatten'のバグかもしれませんが、Developer Communityにこれを提出することができます:https://developercommunity.visualstudio.com/spaces/8/index.html – Alex

答えて

0

それは私の引数flatten="true"についての問題であるべきのVisual Studio 2017

を使用してNugetパッケージのコンテンツファイルのためPackageFlattenを指定します。 。 - ファイルは、すべてのプロジェクトのルートフォルダに配信されるべきか、彼らが中にパッケージ化されたフォルダ構造を維持する必要があり、デフォルト値は、彼らが必要示すfalseです

フラット化:文書NuGet ContentFiles Demystifiedによると、 pacakge内のTFMフォルダの後にあるものと同じ構造を作成して(必要な場合)作成してください。だから、

我々は.nuspecファイルで、この引数flatten="true"を設定した場合、その後、この.nuspecをパック、プロジェクトに生成nugetパッケージをインストールし、ファイルは、プロジェクトのルートフォルダに配信されなければなりません。しかし、このパッケージをプロジェクトにインストールした後でも、そのファイルはルートフォルダにないサブフォルダRemoveMeに残っています。

他の引数buildAction="content" copyToOutput="false"もテストしますが、どちらも問題なく動作します。

したがって、私はflatten="true"の引数に問題があります。this issue on GitHubを送信すると、この問題を追跡できます。

関連する問題