2017-04-12 12 views
0

解決策の複数のC#プロジェクトで参照する必要があるサードパーティのDLLがあります。複数のプロジェクトで一般的なバイナリを参照する

現在、以下のように参照されています。

<Reference Include="Contoso.App, Version=4.0.5.0, Culture=neutral, PublicKeyToken=xxxxxxxx, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\ThirdParty\Contoso\4.0.5.0\Contoso.App.dll</HintPath> 
    </Reference> 

DLLのバージョンは、私が行かなければならない

..\ThirdParty\Contoso\5.0\ 

を次のように新しいフォルダが作成されて変更されるたびに、私はContoso.App.Dll

を参照する私の溶液中で約40のプロジェクトを持っています40のプロジェクトを次のように更新します。

<Reference Include="Contoso.App, Culture=neutral, PublicKeyToken=xxxxxxxx, processorArchitecture=MSIL"> 
    <SpecificVersion>False</SpecificVersion> 
    <HintPath>..\ThirdParty\Contoso\5.0\Contoso.App.dll</HintPath> 
    </Reference> 

DLLのバージョン変更を管理する良い方法はありますか?

ソリューションで1つの変数を作成し、すべてのプロジェクトで再利用できますか?

+0

ソリューションのすべてのプロジェクトで使用しているのですか、それともサブセットのみですか? – Scheme

+0

実際にすべてのプロジェクトではありません。私はこのソリューションに約70のプロジェクトを持っています。 40人がDLLを参照しています。 –

+4

'\ ThirdParty \ Contoso \ CurrentVersion \ Contoso.App.dll'をパスとして使用せず、dllバージョン5.0をコピーしてください。 – TriV

答えて

1

プライベートNuGetリポジトリは完全ですが、あまりにも多くの変更が必要です。もっと簡単な方法は、共通のプロジェクトを作成し、この共通のプロジェクトを他のプロジェクトが参照できるようにすることです。

  1. common.props。 ..ではなく、ソリューションの相対パスを使用する方がよいでしょう。

    <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
        <ItemGroup> 
        <Reference Include="Contoso.App, Culture=neutral, PublicKeyToken=xxxxxxxx, processorArchitecture=MSIL"> 
         <HintPath>..\ThirdParty\Contoso\5.0\Contoso.App.dll</HintPath> 
        </Reference> 
        </ItemGroup> 
    </Project> 
    
  2. 他のプロジェクトでもインポートできます。

    <Import Project="<MySolutionPath>\common.props"/> 
    

参照が即座に更新されるため、変更がcommon.propsに作られた後、VSでビルドエラーがあるかもしれません。最初にコマンドラインmsbuild.exeで確認してください。

0

Setup a Private Nuget Repositoryチームの残りのメンバーがアクセスできるようにします。 Scott's答えを参照してください。

TL; DR

  • オープンビジュアル・スタジオ
  • 新しい空のWeb
  • Nuget.Serverパッケージ
    • パッケージマネージャコンソールを追加プロジェクト
    • 作成します。インストール・パッケージnugetを。サーバー
    • Web.configを上書きする:はい
  • オープンのWeb.config
  • セットのappSettings
    • packagesPath:

      nugetのinit C:\ソースC:\ localnuget nugetが

  • 初期に座るために起こっています

  • プッシュ:

    nugetプッシュ{パッケージファイルが}だけTriVさんのコメントに柔軟性を追加するhttp://localhost:51217/nuget {} APIキー

Alternate hosting

0

を-s、あなたは環境変数を定義することができます(たとえば、 CONTOSO_VERSION)を使用してpre-build eventコマンドで使用して、$ CONTOSO_VERSIONを使用してDLLをbinフォルダ(または参照元のどこにでも)にコピーします。この方法で、参照されるDLLのバージョンをenv変数で前後に変更することができます。他のプロジェクトに依存しているプロジェクトの事前ビルドイベントであることを確認します(または、ソリューション全体のビルド前のイベントでは、それに応じて他のプロジェクトとダミープロジェクトを作成します)。

関連する問題