如何对 Visual Studio 工件进行版本控制?

Posted

技术标签:

【中文标题】如何对 Visual Studio 工件进行版本控制?【英文标题】:How to version Visual Studio artifacts? 【发布时间】:2022-01-08 08:23:15 【问题描述】:

当我构建一个 Maven 项目时,工件版本在 pom.xml 文件中。在 Gradle 中,它位于 gradle.propertiesbuild.gradle 文件中。在 NodeJS 中,它位于 package.json 文件中。

在对 Visual Studio 解决方案 (*.sln) 工件进行版本控制时是否有等效的方法,所以当我发布工件时它将使用该版本?

【问题讨论】:

【参考方案1】:

Visual Studio、MsBuild 和 Nuget 支持锁定文件。但是,您需要使它们能够生成它们。几乎全世界都选择了退出系统,.NET 生态系统有一个选择加入系统。如果我没记错的话,Visual Studio 2017 添加了支持。

编辑您的项目文件并添加:

<Project>     
   <PropertyGroup>         
      <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>     
   </PropertyGroup> 
</Project>

要在锁定模式下强制恢复,请添加:

<RestoreLockedMode>true</RestoreLockedMode>

并且可以选择在 CI 上自动执行该条件:

<Project>
    <PropertyGroup>
        <RestorePackagesWithLockFile>true</RestorePackagesWithLockFile>
        <RestoreLockedMode 
            Condition="'$(RestoreLockedMode)' == '' 
                and ('$(TF_BUILD)' != '' 
                or '$(CONTINUOUS_INTEGRATION)' != '')"
        >
          true
        </RestoreLockedMode>
    </PropertyGroup>
</Project>

您也可以使用 dotnet 或 msbuild 从命令行传入这些属性:

> dotnet restore --locked-mode
> msbuild /t:restore /p:RestoreLockedMode=true

这些属性是为每个 .NET 项目文件设置的。这不是解决方案范围的属性。

另见:

https://jessehouwing.net/99-percent-of-code-isnt-yours/

【讨论】:

以上是关于如何对 Visual Studio 工件进行版本控制?的主要内容,如果未能解决你的问题,请参考以下文章

使用 Visual Studio 2019 对 BizTalk 2020 人工制品进行单元测试会导致 Intellisense 问题

Visual Studio2017 数据库数据比较

如何使用 GitHub Actions 对构建工件进行版本化?

Visual Studio和TFS:通过Changeset ID来回转到以前的版本

C#用Visual Studio连接ONENET物联网平台做一个简易版微信,兼带连接esp8266通讯控继电器功能

DevExpress ASP.NET Core v19.1版本亮点:Visual Studio集成