添加解决方案级程序集参考

gru*_*unt 3 .net c# visual-studio-2013

我的解决方案包括几十个项目(比如 proj1 到 proj50),每个项目都引用了一系列完全相同的十几个程序集(比如 asm1 到 12)。这些程序集 (asm1-asm12) 在没有提示路径的情况下被引用。解决方案(包含 proj1-proj50)由另一个组维护,因此不太需要更改它们(我既不是 proj i 也不是 asm i 的所有者,我只想构建解决方案)。

我想做的是将十几个程序集 dll 放在所有项目都可以看到的地方,而无需在每个项目中单独设置路径。换句话说,我想避免为每个解决方案树重复相同的任务 600 次。添加解决方案级别的“解决方案”就可以了(因此我将对单个 sln 执行单个操作),在不更改解决方案的情况下执行此操作会更好(永久执行单个操作)。

Sco*_*ain 5

在解决方案文件夹中,如果您添加一个名为Directory.Build.propsprops 文件的文件,该文件将被读入并导入到与该 props 文件相同或更低的目录中构建的任何项目中,作为文件中的第一件事(如果您使用Directory.Build.targets它,它将是作为文件中的最后一件事导入)

您可以将项目引用移出 .csproj 并移入该 .props 文件,它们将被导入,就好像它们仍在 .csproj 中一样

下面是一个示例Directory.Build.props,它将导致解决方案中的每个项目都包含该文件lib\ThirdParty.SomeLibrary.dll作为参考。

<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <ItemGroup>
        <Reference Include="ThirdParty.SomeLibrary", Version=10.4.0.0, Culture=neutral, PublicKeyToken=1010a0d8d6380325, processorArchitecture=MSIL">
          <HintPath>$(MSBuildThisFileDirectory)\lib\ThirdParty.SomeLibrary.dll</HintPath>
        </Reference>
    </ItemGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

您可以将 Directory.Build.props 文件包含为解决方案级别文件,并且您将能够轻松地从 Visual Studio 内部打开和编辑该文件。