NuGetソースのみのパッケージ依存関係を追加する方法

Nov 28 2020

MicrosoftのCRM / XRM / CDS / PowerPlatform / DataVerseプラグインで使用するために作成したフレームワークがあります。これらのプラグインには、外部の.NetFramwork以外のMicrosoftSDK以外のdllへの依存関係を含めることはできません。依存関係をILMergingするのではなく、NuGetのソースオンリーパッケージを使用して、ソースファイル自体をNuGet経由で共有できるようにし、他のdllを参照してILMergingする必要をなくしました。

これらのNuGetパッケージをdotnetcoreと互換性のあるものにしようとしています。2つのnugetパッケージDLaB.Xrm.SourceとDLaB.Common.Sourceがあります。DLaB.Xrm.SourceはDLaB.Common.Sourceに依存します。dotnetcoreのCommonパッケージのNugetパッケージを正常に更新できましたが、すべてが見栄えがします。次に、dotnetcoreのXrmパッケージを更新しましたが、DLaB.Xrm.Sourceパッケージのみのインストールをテストしたところ、DLaB.Common.Sourceパッケージが追加されていないようです。これは、不足しているもののビルドエラーが発生するためです。依存関係としてリストされている場合でも、ファイル:

私は何かが足りないのですか?これを機能させる方法はありますか、それともパントしてDLaB.Common.SourceファイルをDLaB.Xrm.Sourceファイルに直接含める必要がありますか?

これは、NuSpecファイルに依存関係をリストする方法です。

<dependencies>
  <group targetFramework="net">
    <dependency id="DLaB.Common.Source" version="1.2.0.10" />
  </group>
  <group targetFramework="netcoreapp">
    <dependency id="DLaB.Common.Source" version="1.2.0.10" />
  </group>
</dependencies>

回答

Daryl Nov 30 2020 at 20:07

これはNuGetの設計によるもののようです。これによれば:

https://docs.microsoft.com/en-us/nuget/reference/nuspec#dependencies-element

コンテンツファイルは除外されるため、依存関係のソースファイルを親に含める必要があります。

除外する場合:

最終パッケージで除外する依存関係を示す、包含/除外タグのコンマ区切りリスト(以下を参照)。デフォルト値はbuild、analyzersで、上書きできます。ただし、content / ContentFilesは、上書きできない最終パッケージで暗黙的に除外されます。excludeで指定されたタグは、includeで指定されたタグよりも優先されます。たとえば、include = "runtime、compile" exclude = "compile"は、include = "runtime"と同じです。