2017-04-12 58 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版本。确保它是其他项目所依赖的项目的预构建事件(或者根据它创建一个虚拟项目,以用于解决方案范围的预构建事件)。

相关问题