2016-06-14 12 views
1

私は複数のVisual Studio .Netプロジェクトに取り組んでおり、それらはすべて一緒に開発しているNugetパッケージを共有しています。テストのために、私は自分のNugetプロジェクトによって生成された.dllを直接参照したいと思います(それをパックして各テストプロジェクトにインストールする必要はありません)。Visual Studioプロジェクト、Nuget .dllに裏付けされたローカル.dll参照

Visual Studioプロジェクトで、特定のパスで特定の.dllをプロジェクトが参照するように指定していましたが、適切なNugetパッケージにフォールバックしているかどうかは疑問でした。

ほとんどのマシンでは.dllパスは存在しないため、Nugetパッケージを使用することになりますが、マシン上では自分の.dllの開発版への直接的な行があることを意味します。

ところで、私はこの例ではVisual Studio 2013を使用していますが、Visual Studio 2015プロジェクトでこれが可能かどうかを知ることもできます。

いくつかのファイルが存在するかどうかをチェックするmsbulid条件を使用することができます

答えて

0

https://msdn.microsoft.com/en-us/library/7szfhaft.aspx

いくつかのサンプル:

<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" /> 

または:

<Choose> 
    <When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'"> 
     <ItemGroup> 
     <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" /> 
     </ItemGroup> 
    </When> 
    <Otherwise> 
     <ItemGroup> 
     <Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" /> 
     </ItemGroup> 
    </Otherwise> 
    </Choose> 
+1

私は少しこれに慣れています。私の前提は、提案されたコードを、ナゲットがインストールされているプロジェクトの.csprojファイルに入れることです。あなたが提案した最初のタグにはいくつかのターゲットファイルが含まれていますが、これを目的のデバッグ.dllに置き換える必要があると思いますか?どのようにして、その.dllをナゲットのパッケージ化された.dllの代わりに使用するよう指示するのですか?編集:あなたの2番目の例は、私が望むものをもっとしているようですが、私はそれが.csprojのどこに置かれるか、そこにファイルへのパスを指定する方法には慣れていません。私は条件を変更し、参照タグを置き換えると思いますか? –

+0

はい、あなたの参照を見つけ、条件で置き換える必要があります – vmg

0

私は右のあなたがすべきあなたの質問を解釈していた場合プロジェクトのbinフォルダに生成された.dllへの参照を追加するだけです。 リファレンスを追加することが慣れていない場合は、これを行う方法を説明することができます。

参照の追加:

は右下隅に「参照...」あなたのソリューションエクスプローラ :クリックで「参照」ノードをクリックしてください右回転。 - .dllファイルを格納するフォルダに移動します。

.dllを変更してコンパイルするたびに、これらの変更が自動的にホストプログラムに反映されます。

+0

これは、私の.dllの開発版を持っていない人がビルドするのを止めませんか? –

+0

あなたのプログラムをどのようにユーザーに配布するのかはわかりませんが、.dllへの参照を右クリックして "ローカルコピー"設定がtrueになっていることを確認すると、.dllのコピーがビンに送られますフォルダは、Visual Studioでプログラムが実行されるたびに表示されます。したがって、あなたがVSの外部で実行可能ファイルを実行すると、その.dllの最新の変更が反映されます。 – NickC

+0

申し訳ありませんが、これは私が言及しているものとは異なる質問に答えます。私は "コピーローカル"を使用している場合は、私はナゲットを交換した.dllの開発中のバージョンをコピーします。私はそれがいいと思うけど、ナゲットを使った解決策を私に提供していない。つまり、このコードを自分のリポジトリにコミットして、誰かが他のソリューションをクローンしていない場合、ビルドしようとすると、ぶら下がっているリファレンスがついてしまうでしょう。他のソリューションは、私が必要とするものに近づきます。 –

関連する問題