0

MyHelper という .netcore2.0 アプリがあります。MyHelper は、B という .netstandard2.0 プロジェクトを参照しています。MyHelper は nuget パッケージとして公開されています。

ビルド時にのみ他のプロジェクトとソリューションで MyHelper を使用する必要があるため、他のプロジェクトでは、この nuget パッケージを非公開としてマークします。

<PackageReference Include="MyHelper" Version="1.0.0">
      <PrivateAssets>all</PrivateAssets>
</PackageReference>

ただし、この nuget パッケージを使用する他のプロジェクトの出力フォルダーには、B.dll が存在しています。ビルド時のみを意図しているため、私はそれを望んでいません。アプリケーションに出荷されないようにするにはどうすればよいですか。ありがとう

4

1 に答える 1

0

<PrivateAssets>all</PrivateAssets>あなたの状況では機能しません。このノードをProject Cで使用すると、 Project Cへのプロジェクト参照を持つProject Dという別のプロジェクトが nuget パッケージにアクセスできなくなります。

つまり、プロジェクト C のナゲット パッケージ、およびプロジェクト Cの参照を持つ他のプロジェクトにこのノードを使用すると、他のプロジェクトはナゲット パッケージにアクセスできず、現在のプロジェクト Cのプライベート プロパティのみになります。

そのため、ニーズを解決できず、nuget パッケージの依存関係を処理できません。

解決策 1

Deleteタスクを使用するだけで、 MyHelper nuget パッケージを参照するプロジェクトにこれを追加します。

<Target Name="RemoveTheFiles" AfterTargets="AfterBuild">
        
        <ItemGroup>
            <File Include="$(TargetDir)B.dll">          
            </File>
        </ItemGroup>

        <Delete Files="@(File)"></Delete>
                    
</Target>
于 2020-11-23T03:14:46.960 に答える