C# 添加解决方案级程序集引用

C# 添加解决方案级程序集引用,c#,.net,visual-studio-2013,C#,.net,Visual Studio 2013,我的解决方案包括几十个项目(比如proj1到proj50),每个项目都引用一系列完全相同的十几个程序集(比如asm1-12)。引用这些程序集(asm1-asm12)时没有提示路径。解决方案(包含proj1-proj50)由另一个组维护,因此不太需要对其进行更改(我不是proj I或asm I的所有者,我只想构建解决方案) 我想做的是将十几个左右的程序集DLL放在一个所有项目都可以看到的位置,而无需在每个项目中单独设置路径。换句话说,我希望避免对每个解决方案树重复相同的任务600次。添加解决方案级

我的解决方案包括几十个项目(比如proj1到proj50),每个项目都引用一系列完全相同的十几个程序集(比如asm1-12)。引用这些程序集(asm1-asm12)时没有提示路径。解决方案(包含proj1-proj50)由另一个组维护,因此不太需要对其进行更改(我不是proj I或asm I的所有者,我只想构建解决方案)


我想做的是将十几个左右的程序集DLL放在一个所有项目都可以看到的位置,而无需在每个项目中单独设置路径。换句话说,我希望避免对每个解决方案树重复相同的任务600次。添加解决方案级别的“解决方案”是可以的(因此我将为单个sln执行单个操作),在不更改解决方案的情况下执行此操作甚至更好(永久性的单个操作)如果添加名为
目录.Build.props
的文件,则该props文件将被读入并导入到与该props文件位于同一目录或更低目录的任何项目中,作为文件中的第一项内容(如果使用
Directory.Build.targets
它将作为文件中的最后一项导入)

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

下面是一个
目录.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>


添加预构建事件,将它们从源文件夹复制到公共文件夹我删除了我的NuGet答案,因为你的答案更好,我学到了一个新功能:)。