为便于讨论,我假定您有一个包含解决方案文件的项目目录,一个“RealLibrary \ RealLibrary.csproj”项目文件(您的“真实”库和依赖项)以及一个“MockLibrary \ MockLibrary”。 csproj“文件(你的”模拟“库,空实现)。
如果我理解正确的,你想轻松地“交换”在解决方案中的MockLibrary为RealLibrary,反之亦然。
假设您的解决方案(和相关项目)配置为查找“RealLibrary.csproj”项目,最简单/最诡异的方法是重命名“RealLibrary”目录(这与什么无关),并将“MockLibrary”目录重命名为“RealLibrary”,并将“MockLibrary.csproj”重命名为“RealLibrary.csproj”。这将有效地“欺骗”您的解决方案和相关项目,即使它们正在引用“真正的库”,也会加载“模拟库”。
一个稍微复杂一点的解决方案实际上是修改“sln”和“csproj”文件以引用“MockLibrary.csproj”而不是“RealLibrary.csproj”。在“SLN”的文件,你需要将路径更改为项目的部分靠近顶部:
Microsoft Visual Studio Solution File, Format Version 10.00
# Visual Studio 2008
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RealLibrary", "RealLibrary\RealLibrary.csproj", "{E1714F9A-E1D9-4132-A561-AE2B4919391C}"
EndProject
您需要更改路径“RealLibrary \ RealLibrary.csproj”到“MockLibrary \ MockLibrary .csproj的”。如果你要完整,你也可以改变名称(或者可能只是使用一个通用名称,比如“库”作为名称)。
同样,在相关的csproj文件,你需要找到“ProjectReference”节点的所有情况下,您引用“RealLibrary.csproj”和修改路径。这些部分如下所示:
<ProjectReference Include="..\RealLibrary\RealLibrary.csproj">
<Project>{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</Project>
<Name>RealLibrary</Name>
</ProjectReference>
您可以相对轻松地编写一些脚本来执行此交换。但是,我认为这里有一个更深层的问题,可以更直接地解决。我会把它作为一个单独的答案发布,但我希望你能够首先找到你正在寻找的实际答案。
我们非常希望将它作为我们主要解决方案的一部分(这简化了持续集成设置),但如果没有其他想法,我会考虑您的。谢谢。 – liori 2010-05-25 00:05:10
@liori如果外部依赖关系采用库和独立工具的形式,则可以将这些添加到源代码管理中,并根据需要引用它们。这将避免需要任何“特殊设置”。 – 2010-05-25 20:19:16