2012-01-08 54 views
2

所以我们的构建系统和源代码控制系统来自Perforce,它是一个庞然大物。Visual Studio Addin - 在项目加载后更改项目引用而不“真正”更改它们

我们希望将项目中的dll引用更改为其他位置,例如,当前引用可能是C:\ blah \ debug \ blah.dll,我们要更改它为d:\ codeinjected \ blah \ debug \ blah.dll

但是我们不想这样做是VStudio项目文件,因为那也是我们的MSBuild构建实验室文件,那么有没有办法让一个插件可以在飞行中做到这一点,没有真正改变参考?

回答

1

这听起来像你想要改变Visual Studio项目的引用DLL的位置。最简单的方法是将条件结构添加到MsBuild文件中。

<Reference Condition="$(OnDevMachine)"> 
    ... 
</Reference> 
<Reference Condition="$(OnLabMachine)"> 
    ... 
</Reference> 

另一种选择是为您的所有项目都有一个通用的msbuild文件。在该特定项目中,您可以创建一个指向参考目录的有条件定义的值,并让每个叶子项目引用该变量。它会减少代码,可能更适合你的构建人员。

<PropertyGroup> 
    <ReferenceDir Condition="$(OnDevMachine) == 'true'">Some\Dev\Path</ReferenceDir> 
    <ReferenceDir Condition="$(OnLabMachine) == 'true'">Some\Lab\Path</ReferenceDir> 
</PropertyGroup> 
+0

除了我不能膨胀csproj文件,我们的构建主人建议在SO上寻求其他替代方案。有关如何在IDE中可能伪造它的任何想法? – halivingston 2012-01-08 03:54:19

+0

IDE使用MsBuild文件;这是做你想做的事情的正确方法。我不知道为什么你/你的“构建大师”嘲笑它是“膨胀”的文件。它没有这样的事情。当然你的构建系统可以处理几条额外的线路。 – 2012-01-08 04:15:06

+0

@ user986697我增加了另一种可能会更适合你的构建人员的可能性。不过,我觉得修改构建文件结构是正确的方法。这是一个构建问题,应该由构建系统来解决。我一直在**很多采取类似方法的球队。 – JaredPar 2012-01-08 17:23:32

相关问题