C# 基于解的条件参考路径
我有一套这样组织的解决方案C# 基于解的条件参考路径,c#,visual-studio-2010,msbuild,C#,Visual Studio 2010,Msbuild,我有一套这样组织的解决方案 Master Solution - Proj A - Proj B - Proj X - Proj Y SolutionAB - Proj A - Proj B SolutionXY - Proj X - Proj Y 依赖关系 Proj A & B => Proj X & Y 我需要的是让MasterSolution查看本地项目参考,SolutionAB查看相同DLL的
Master Solution
- Proj A
- Proj B
- Proj X
- Proj Y
SolutionAB
- Proj A
- Proj B
SolutionXY
- Proj X
- Proj Y
依赖关系
Proj A & B => Proj X & Y
我需要的是让MasterSolution查看本地项目参考,SolutionAB查看相同DLL的完全任意位置。我可以对
.proj
文件进行任何需要的更改,但移动项目的能力有限。这些只是我必须处理的限制。库引用存储在项目文件中。因为项目是在解决方案之间共享的,所以我认为没有简单的方法可以做到这一点
项目不能始终在任意位置查找文件的任何原因?您可以使用导入的属性文件执行此操作。由于引用位于项目文件中,因此可以将其或其使用的属性移动到单独的.props文件中 在单独的.props文件中
<PropertyGroup>
<SomeAssemblyFolder
Condition="'$(SolutionName)' == 'Master'">PathTo/Master</SomeAssemblyFolder>
<SomeAssemblyFolder
Condition="'$(SolutionName)' == 'AB'">PathTo/AB</SomeAssemblyFolder>
</PropertyGroup>
路径/主路径
路径/AB
在项目文件中
<Reference Include="SomeAssembly">
<HintPath>$(SomeAssemblyFolder)\SomeAssembly.dll</HintPath>
</Reference>
$(SomeAssemblyFolder)\SomeAssembly.dll
如果需要,我想您可以在每个项目文件中复制属性定义,但我会将其移动到导入。如果您需要从命令行或其他解决方案文件进行构建,请记住提供合理的默认值,或在命令行上提供有区别的属性。是的,当您确实只想处理项目时,很难处理任意DLL,同时,其他人依赖共享DLL,因此,您必须在文件系统中将它们保持为只读状态。在我工作的地方,他们就是这样做的。你能提供更多关于如何在C#projects中创建一个单独的.props文件和导入.props文件的信息吗,或者至少提供一些相关链接。我在回答中使用了你的示例,尝试了一个单独的props文件,出于某种原因,即使导入工作正常且不会抛出错误,csproj也不会拾取props文件中的路径,如果我将带有共享位置的属性组放入csproj文件中,它就会工作,我不明白为什么没有从导入的道具文件中提取该值。这确实有效。我将路径指向了错误的导入文件。