【问题标题】:Visual Studio Addin - Changing project references after project load without "really" changing themVisual Studio Addin - 在项目加载后更改项目引用而不“真正”更改它们
【发布时间】:2012-01-08 03:35:26
【问题描述】:

所以我们的构建系统和源代码控制系统是来自 Perforce,这是一个垃圾。

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

但我们不想这样做的是 VStudio 项目文件,因为这也是我们的 MSBuild 构建实验室文件,所以有没有办法制作一个可以即时完成的插件,而无需实际更改引用?

【问题讨论】:

    标签: visual-studio visual-studio-2010 visual-studio-addins


    【解决方案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>
    

    【讨论】:

    • 除了,我不能膨胀 csproj 文件,我们的构建大师建议在 SO 上询问除此之外的其他替代方案。关于如何在 IDE 中伪造它的任何想法?
    • IDE 使用 MsBuild 文件;这是做你想做的事情的正确方法。我不知道为什么您/您的“构建大师”将其嘲笑为“膨胀”文件。它没有这样的事情。当然,您的构建系统可以处理几行额外的代码。
    • @user986697 我添加了另一种可能更适合您的构建人员的可能性。但是我确实觉得改变构建文件结构是正确的方法。这是一个构建问题,应该由构建系统解决。我曾在 许多 采用类似方法的团队工作过。
    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2010-12-05
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    相关资源
    最近更新 更多