在 Subversion 中构建 Visual Studio 解决方案并保留项目引用

阿梅西赫尔

已经构建一个Visual Studio解决方案这种方式(看到这么问题后15621):

sln/
    dll/
        trunk/dll.vbproj        
    exe/
        trunk/exe.vbproj

这里,exe.vbproj 引用了 dll.vbproj. 如果我使用MSBuild构建每个项目,一切都应该没问题

现在我想标记 dll 和 exe 项目:

sln/
    dll/
        tags/1.0.0/dll.vbproj
        trunk/dll.vbproj       
    exe/
        tags/1.0.0/exe.vbproj
        trunk/exe.vbproj

我添加了一个目录的深度。因此,exe/tags/1.0.0/exe.vbproj除非我dll/tags/1.0.0/dll.vbproj手动修复对路径的引用,否则我将无法构建

我做错什么了吗?有没有办法避免手动编辑?

Lance Li-MSFT

通常我们在一个exe工程中通过右键project add project reference的方式添加对dll的工程引用时,exe.xxproj中的修改应该是这样的:

  <ItemGroup>
    <ProjectReference Include="..\..\DllName\trunk\DllName.vbproj">
      <Project>{1fe037b8-5561-4aa0-895d-8bad9eadad20}</Project>
      <Name>DllName</Name>
    </ProjectReference>
  </ItemGroup>

所以我觉得你可以尝试把它改成下面的内容,在加载项目文件的时候,如果项目在trunk文件夹下,它会在trunk文件夹下的.dll中添加ref。当 .exe 在 tags 文件夹中时,它将搜索 tags 文件夹以添加 ref。

  <!--When in a trunk folder-->
  <ItemGroup Condition="'$(ProjectDir)'=='$(SolutionDir)$(AssemblyName)\trunk\'">
    <ProjectReference Include="..\..\dll\trunk\dll.vbproj">
      <Project>{1fe037b8-5561-4aa0-895d-8bad9eadad20}</Project>
      <Name>dll</Name>
    </ProjectReference>
  </ItemGroup>

  <!--Not in a trunk folder-->
  <ItemGroup Condition="'$(ProjectDir)'!='$(SolutionDir)$(AssemblyName)\trunk\'">
    <ProjectReference Include="$(SolutionDir)dll\tags\$(VersionNumber)\dll.vbproj">
      <Project>{1fe037b8-5561-4aa0-895d-8bad9eadad20}</Project>
      <Name>dll</Name>
    </ProjectReference>
  </ItemGroup>

对于此脚本,当它位于标签文件夹中时。我们使用 path:$(SolutionDir)dll\tags\$(VersionNumber)\dll.vbproj进行搜索。但是 $(VersionNumber) 的值对我们来说是未知的。($(SolutionDir),$(ProjectDir)是预定义的)

所以它的价值取决于:

1.如果每次当您有项目的更新版本时,您都会删除或移动旧版本。

我的意思是对于文件版本 1.0.0.0,tags fodler 下有一个 1.0.0.0 文件夹,当您将其更新为 2.0.0.0 时,只存在一个 2.0.0.0 文件夹,而不是 1.0.0.0 和 2.0.0.0 文件夹下的 tags 文件夹. 对于这种情况:路径可以是这样的:$(SolutionDir)dll\tags\$(VersionNumber)\dll.vbproj

2.如果您已经在 .xxproj 文件中预定义了 $(VersionNumber) 属性,则路径可以是:$(SolutionDir)dll\tags\$(VersionNumber)\dll.vbproj

(不确定你是如何构建它们的,如果你通过.xxproj文件构建它们,你可能有预定义的VersionNumber,如果你手动完成并且没有在.vbproj中定义它,我们不能容易地以这种方式使用路径)

3.现在我们需要做的就是在构建过程中获取 AssemblyFileVersion 属性的值。对于您的情况,您需要在构建之前获取 AssemblyFileVersion 编号,请查看此线程中的第一个方向以获取更多详细信息。

对于模式:从变化<Pattern>\[assembly: AssemblyVersion\(.(\d+)\.(\d+)\.(\d+).(\d+)</Pattern><Pattern>\[assembly: AssemblyFileVersion\(.(\d+)\.(\d+)\.(\d+).(\d+)</Pattern>,如果你的文件版本构造它们。

$(Ve​​rsionNumber) 应该是这样的:

<PropertyGroup>
    <VersionNumber>$(FirstNum).$(SecondNum).$(ThirdNum).$(FourthNum)</VersionNumber>
</PropertyGroup>

所以回到你原来的帖子:

我做错什么了吗?有没有办法避免手动编辑?

你所做的一切都是针对你的具体情况,没有错。有一些方法可以避免手动编辑,但我不确定这种方式是否满足您的需求。因为有时当我们想要避免一些手动编辑时,我们需要做更多的工作来实现该方法。希望以上所有帮助:)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Visual Studio解决方案中仅构建特定项目

来自分类Dev

在Visual Studio中,是否可以阻止并行构建解决方案中的某些项目?

来自分类Dev

如何从 Visual Studio 中的项目解决方案中删除其他构建文件

来自分类Dev

更新到最新的 subversion 后,Ankh SVN 未向 Visual Studio 中的解决方案添加新文件

来自分类Dev

在Visual Studio中构建解决方案时无法编译Wix项目

来自分类Dev

在大型Visual Studio解决方案中,如何快速识别带有构建事件的项目?

来自分类Dev

我可以让 Visual Studio 只在解决方案中构建每个项目一次吗?

来自分类Dev

在解决方案中递归查找引用(Visual Studio)

来自分类Dev

从Visual Studio解决方案中删除项目

来自分类Dev

带有多个使用不同版本控制系统(Subversion和TFS)的项目的Visual Studio解决方案

来自分类Dev

Teamcity-如何构建多项目Visual Studio解决方案?

来自分类Dev

如何构建和部署具有多个项目的Visual Studio解决方案

来自分类Dev

TeamCity继续构建从我的Visual Studio解决方案配置中排除的项目

来自分类Dev

如何构建和部署具有多个项目的Visual Studio解决方案

来自分类Dev

如何在Linux下构建Visual Studio解决方案?

来自分类Dev

通过代码构建Visual Studio解决方案

来自分类Dev

如何使Visual Studio使用FAKE构建我的解决方案?

来自分类Dev

Visual Studio:构建解决方案时输出时间戳

来自分类Dev

在Visual Studio中构建解决方案时使用哪个编译器?

来自分类Dev

解决方案在 Visual Studio 中构建,但 Jenkins 引发资产异常

来自分类Dev

如何在Visual Studio中的解决方案中添加对组件的引用

来自分类Dev

Visual Studio 2013中解决方案资源管理器未引用的图像

来自分类Dev

在Visual Studio 2012/2013中的项目/解决方案中缺少文件时报告错误/警告

来自分类Dev

在Visual Studio 2012中以管理员身份运行解决方案中的项目之一

来自分类Dev

从Visual Studio Online中的解决方案中删除丢失的项目

来自分类Dev

如何在Microsoft Visual Studio 2012中制作项目/解决方案的副本?

来自分类Dev

如何以管理员权限强制在Visual Studio中打开项目/解决方案?

来自分类Dev

在Visual Studio解决方案中链接两个项目

来自分类Dev

Visual Studio 2013-如何在解决方案中调试项目

Related 相关文章

  1. 1

    在Visual Studio解决方案中仅构建特定项目

  2. 2

    在Visual Studio中,是否可以阻止并行构建解决方案中的某些项目?

  3. 3

    如何从 Visual Studio 中的项目解决方案中删除其他构建文件

  4. 4

    更新到最新的 subversion 后,Ankh SVN 未向 Visual Studio 中的解决方案添加新文件

  5. 5

    在Visual Studio中构建解决方案时无法编译Wix项目

  6. 6

    在大型Visual Studio解决方案中,如何快速识别带有构建事件的项目?

  7. 7

    我可以让 Visual Studio 只在解决方案中构建每个项目一次吗?

  8. 8

    在解决方案中递归查找引用(Visual Studio)

  9. 9

    从Visual Studio解决方案中删除项目

  10. 10

    带有多个使用不同版本控制系统(Subversion和TFS)的项目的Visual Studio解决方案

  11. 11

    Teamcity-如何构建多项目Visual Studio解决方案?

  12. 12

    如何构建和部署具有多个项目的Visual Studio解决方案

  13. 13

    TeamCity继续构建从我的Visual Studio解决方案配置中排除的项目

  14. 14

    如何构建和部署具有多个项目的Visual Studio解决方案

  15. 15

    如何在Linux下构建Visual Studio解决方案?

  16. 16

    通过代码构建Visual Studio解决方案

  17. 17

    如何使Visual Studio使用FAKE构建我的解决方案?

  18. 18

    Visual Studio:构建解决方案时输出时间戳

  19. 19

    在Visual Studio中构建解决方案时使用哪个编译器?

  20. 20

    解决方案在 Visual Studio 中构建,但 Jenkins 引发资产异常

  21. 21

    如何在Visual Studio中的解决方案中添加对组件的引用

  22. 22

    Visual Studio 2013中解决方案资源管理器未引用的图像

  23. 23

    在Visual Studio 2012/2013中的项目/解决方案中缺少文件时报告错误/警告

  24. 24

    在Visual Studio 2012中以管理员身份运行解决方案中的项目之一

  25. 25

    从Visual Studio Online中的解决方案中删除丢失的项目

  26. 26

    如何在Microsoft Visual Studio 2012中制作项目/解决方案的副本?

  27. 27

    如何以管理员权限强制在Visual Studio中打开项目/解决方案?

  28. 28

    在Visual Studio解决方案中链接两个项目

  29. 29

    Visual Studio 2013-如何在解决方案中调试项目

热门标签

归档