1

也许我只是想不出正确的关键字来从谷歌那里得到答案,但是这里有。

假设我有一个名为“项目”的项目。对于它的第一个版本,我将它存储在文件夹“Project_Version1”中,并将其解决方案、项目、构建 exe 等名称命名为“Project_Version1”。

现在我想制作项目的下一个版本,并将其命名为“Project_Version2”。目前要执行此操作,我复制原始文件夹,并将其重命名为“Project_Version2”,我也想将所有其他内部内容重命名为该文件夹。目前,我必须结合更改 Windows 资源管理器中的名称以及我的解决方案中的一些各种属性页面来做到这一点。

必须有更好的方法来做到这一点。有人如何制作他们项目的第二个版本,并将其文件与第一个版本分开存储?有没有办法重命名包含版本号的适当文件?

4

3 回答 3

4

事实上,有一种更好的方法可以做到这一点,它被称为版本控制。
如果您将源代码检查到TFS(或git或任何其他SCM 软件)中,所有版本都将随着时间的推移进行跟踪。

如果您随后需要同时维护多个版本(例如,对于客户群,客户慢慢迁移到最前沿并且需要补丁来修复旧的受支持版本中的关键问题),您可以将这些版本保留为分支并有选择地合并更改。

如果您确实认为源代码控制非常适合管理您的版本(它也带来了许多其他好处),请考虑阅读一些帖子,例如这个 git 教程为什么使用版本控制


如果你真的不能使用源代码控制,出于某种原因,我建议尽可能多地使用可以轻松更改的语言结构(例如使用 C# 和合理的 IDE、快速重构或使用其他语言)版本特定数据的严格重复数据删除)。
理想情况下,您的代码只有一个版本定义以及项目文件中的版本定义(可以将其设置为构建变量以快速更改)。

在这种情况下,您将复制项目,更改项目的代码版本和版本变量,并且假设很好地使用了相对路径等(没有硬编码版本!),快速重命名几个变量应该可以让您继续前进。

理想情况下,大部分文件名不会引用该版本。唯一引用版本的可能应该是包含目录、项目/解决方案文件和代码中的一些独立引用。

于 2012-06-13T01:56:44.333 回答
2

您可以使用 MSBuild 做一些非常巧妙的技巧。例如,假设这是您的项目。

程序.cs:

namespace MyCustomBuild
{
    class Program
    {
        static void Main(string[] args)
        {
            System.Console.WriteLine("Hello World");
        }
    }
}

如图所示创建您的 MSBuild 文件。构建.msbuild:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <MajorVersion>1</MajorVersion>
    <MinorVersion>0</MinorVersion>
  </PropertyGroup>

  <Target Name="Default">

    <CombinePath BasePath="$(MSBuildProjectDirectory)"
                 Paths="Program.$(MajorVersion).$(MinorVersion)">
      <Output TaskParameter="CombinedPaths" PropertyName="OutputDir"/>
    </CombinePath>

    <MakeDir Directories="$(OutputDir)"/>

    <Csc Sources="program.cs" 
         OutputAssembly="$(OutputDir)\Program.$(MajorVersion).$(MinorVersion).exe"/>

  </Target>

</Project>

运行后msbuild build.msbuild,结果如下: 在此处输入图像描述

使我发布的内容更好的方法:

  1. 使用MSBuild 扩展包AssemblyInfo。如果您在 AssemblyInfo.cs 文件中定义了版本信息,这将允许您更改版本信息。或者您可以查看GenerateApplicationManifest Task,它可以设置程序集版本,但目前可执行文件的文件版本将始终为 1.0.0.0
  2. 实现某种像这样的自动增量系统
  3. 您可以使用复制任务将所有源文件复制到版本控制目录中

有很多东西需要学习,特别是如果您不熟悉 MSBuild,但它是一个功能强大的程序,可以进行 Visual Studio 甚至无法想象的自定义!请注意,解决方案文件 (.sln) 是 MSBuild 文件,即使它不是 xml。

希望这是您正在寻找的。正如其他人所提到的,我还建议您使用官方版本控制,但您似乎有一个想要自动化的特定任务,这是 MSBuild 的强项。

于 2012-06-13T13:45:55.703 回答
0

理想情况下,项目版本控制应该在源代码控制系统中完成,因为 Visual Studio 本身只是一个 IDE。

在不使用源代码控制系统的情况下,不幸的是,我不知道比您目前正在做的更好的解决方案。

于 2012-06-13T02:02:56.653 回答