2017-04-12 56 views
0

我有一個第三方DLL,我需要在解決方案中的多個c#項目中引用。在多個項目中引用常見的二進制文件

目前引用如下。

<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> 

我有我的解決方案大約40個項目,其中引用Contoso.App.Dll

每當DLL版本改變一個新的文件夾,如下所示

..\ThirdParty\Contoso\5.0\ 

我必須去創建並按照以下方式更新我所有的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的版本更改?

我可以在解決方案中創建單個變量並在所有項目中重複使用它嗎?

+0

你在所有解決方案中的項目中使用它或者是它只是一個子集? – Scheme

+0

其實並非所有的項目。我有大約70個解決方案項目。其中40個引用了DLL。 –

+4

你爲什麼不使用'\第三方\ 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"/> 
    

有可能是建立VS錯誤更改在common.props作出後,因爲基準即時更新。首先通過命令行msbuild.exe對其進行驗證。

0

Setup a Private Nuget Repository您的團隊的其他成員可以訪問。 請參閱Scott's的答案。

TL;博士

  • 打開Visual工作室
  • 創建一個新的空Web項目
  • 添加Nuget.Server包
    • 包管理器控制檯:安裝包的NuGet。服務器
    • 覆蓋web.config:是
  • 打開的Web.config
  • 設置的appSettings
    • packagesPath:其中的NuGet是要坐
  • 初始化:

    的NuGet初始化C:\源C:\ localnuget

  • 推送:

    的NuGet推{包文件} -s http://localhost:51217/nuget {} apikey

Alternate hosting

0

只是爲了增加靈活性,以TRIV的評論,你可以定義一個環境變量(例如CONTOSO_VERSION),並將其用於預生成事件命令,以使用$ CONTOSO_VERSION將DLL複製到bin文件夾(或您引用的任何位置)。這樣你可以通過env變量來回改變引用的DLL版本。確保它是其他項目所依賴的項目的預構建事件(或者根據它創建一個虛擬項目,以用於解決方案範圍的預構建事件)。

相關問題