私は私のものと同様にこの提案された質問を読むことから始めましたが、解決策はありませんでした: MSTest.TestAdapterがなぜそのDLLをNuGetパッケージに追加するのですか?
問題の簡単な説明
NuGetパッケージを作成し、インストールするたびにNUnit
、NUnit3TestAdapter
.dll
さんは、私がインストールプロジェクトに追加されます。この問題を解決する解決策を見つけたいです。
再現手順
私が説明している問題を再現する2つのgitリポジトリをプッシュしました。
ClientLibrary
/ MainFramework
(NuGetパッケージを生成したプロジェクト)-https ://github.com/harbourc/client-library-repro-nuget-issue
TargetProject
(パッケージがインストールされるプロジェクト)-https://github.com/harbourc/target-project-repro-nuget-issue
両方のリポジトリのクローンを作成し、NuGetパッケージを復元して、次のように問題を再現できます。
client-library-repro-nuget-issue / ClientLibrary /でClientLibrary.1.0.0.nupkgを見つけます
target-project-repro-nuget-issueのパッケージマネージャーコンソールを開いて実行する
Install-Package C:\Path\To\client-library-repro-nuget-issue\ClientLibrary\ClientLibrary.1.0.0.nupkg
- 注意
NUnit
とNUnit3TestAdapter
.dll
に追加されているのTargetProject
にもかかわらず-TargetProject
すでに持っているNUnit
とNUnit3TestAdapter
インストールされています。
より長い概要
と呼ばれる内部使用のために独自のNuGetパッケージを作成しました。ClientLibrary
それをと呼ばれる別のプロジェクトにインストールしようとしていTargetProject
ます。これは構造の簡単な内訳です:
FullSolution.sln
MainFramework.csproj
ClientLibrary.csproj
->.nupkg
これから生成
別のプロジェクト:
TargetProject.sln
TargetProject.csproj
->.nupkg
これにインストール
ClientLibrary
への参照がありMainFramework
、からの多くのメソッドを使用しMainFramework
ます。
にインストールClientLibrary.1.0.0.nupkg
するTargetProject
と、次.dll
のものがに追加されTargetProject
ます。
nunit.engine.api.dll
nunit.engine.dll
NUnit3.TestAdapter.dll
NUnit3.TestAdapter.pdb
これらを削除すると.dll
、すべてが正常に機能します。TargetProject
すでにこれらのパッケージがインストールされているます。それらは必要ではなく、インストール時にそれらを削除しなければならないのは面倒です。
ここに私がClientLibrary
NuGetパッケージを追加する方法がありますTargetProject
:
- ビルド
ClientLibrary
してMainFramework
プロジェクトを作成して.dllを生成する - ディレクトリを
ClientLibrary
フォルダーに変更して実行しますnuget spec
.nuspec
ファイルが生成されます:
<?xml version="1.0"?>
<package >
<metadata>
<id>ClientLibrary</id>
<version>1.0</version>
<title>Client Library</title>
<authors>Myself</authors>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Client library for interacting with my application.</description>
<dependencies>
<group targetFramework=".NETFramework4.7.2" />
</dependencies>
</metadata>
</package>
実行
nuget pack -IncludeReferencedProjects
- (およびによって使用される他のいくつかのパッケージ)にClientLibrary
依存しているためMainFramework
MainFramework
に移動し
TargetProject
、パッケージマネージャーコンソールを開きます。- 走る
Install-Package C:\Path\To\ClientLibrary.1.0.0.nupkg
インストールは正常に実行され、次にそれらは .dll
私は不満を言っているものを追加します。
問題:
MainFramework
持っているNUnit
とNUnit3TestAdapter
NuGetパッケージがインストールされています。ClientLibrary
ではない。したがって、はにインストール.dll
されているため追加されたようですが、にはインストールされてMainFramework
いませんClientLibrary
。(ClientLibrary
参照、覚えておいてくださいMainFramework.dll
)
との両方にインストールされている他のパッケージがあり、これらはインストール時に追加されるのパッケージがないため、問題はパッケージが存在することによって引き起こされているのではなく、MainFramework
ClientLibrary
.dll
TargetProject
MainFramework
ClientLibrary
。
私はこの問題をインストールNUnit
してNUnit3TestAdapter
上に「修正」できると信じていますClientLibrary
、しかしClientLibrary
、それは不必要と思われるので、実際には、すべてのこれらのパッケージを使用していません。
どのようにしてインストールすることができますClientLibrary
にTargetProject
含まないNUnit
とNUnit3TestAdapter
.dll
の、およびインストールすることなく、NUnit
かつNUnit3TestAdapter
上にClientLibrary
?可能であれば、すでにインストールされているおよびパッケージClientLibrary.1.0.0.nupkg
を使用するように伝えたいNUnit
NUnit3TestAdapter
TargetProject
。
答えが「不可能」である場合は問題ありませんが、説明をお願いします。この質問の全体的な目標は、NuGetと依存関係がどのように機能するかをよりよく理解し、これが問題である理由を理解することです最初の場所。読んでくれてありがとう。
ClientLibrary
だけのいくつかの部分を使用していますMainFramework
ので、MainFramework
確かに分割することができますMainFramework.Framework
とMainFramework.Test
、NUnit
依存関係のみに存在するMainFramework.Test
、とClientLibrary
だけ利用MainFramework.Framework
。分析ありがとうございます。