也许我无法找出合适的关键字来获取谷歌的答案,但现在就去了。
假设我有一个名为“Project”的项目。对于它的第一个版本,我将它存储在“Project_Version1”文件夹中,并将其解决方案,项目,构建exe等名称作为“Project_Version1”。
现在我想制作项目的下一个版本,并将其命名为“Project_Version2”。为了做到这一点,我复制原始文件夹,并将其重命名为“Project_Version2”,我也想重命名所有其他内部的东西。目前,我必须通过更改Windows资源管理器中的名称以及我的解决方案中的一些不同属性页面来实现这一点。
必须有更好的方法来做到这一点。有人如何制作他们项目的第二个版本,并将其文件与第一个版本分开存储?有没有办法重命名包含版本号的相应文件?
答案 0 :(得分:4)
确实,有一种更好的方法可以做到这一点,它被称为版本控制 如果您将来源检查到TFS(或git或任何其他SCM software),系统会跟踪所有版本。
如果您需要同时维护多个版本(例如,对于客户群,客户慢慢迁移到最前沿,需要修补程序来修复旧版支持版本中的关键问题),您可以将这些版本保留为分支并有选择地合并变化。
如果您确定源代码管理非常适合管理您的版本(它还带来许多其他好处),请考虑阅读一些帖子,例如this git tutorial或why use version control。
如果您真的无法使用源代码控制,出于某种原因,我建议您尝试尽可能多地使用可以轻松更改的语言结构(例如使用C#和合理的IDE,快速重构或使用其他语言严格重复版本的特定数据) 理想情况下,您只需要为代码定义一个版本以及项目文件中的版本定义(可以将其设置为构建变量以便快速更改)。
在这种情况下,您将复制项目,更改项目的代码版本和版本变量,并假设使用相对路径等(没有硬编码版本!),快速重命名几个变量应该得到你去了。
理想情况下,大部分文件名都不会引用该版本。引用该版本的唯一内容应该是包含目录,项目/解决方案文件以及代码中的一些独立引用。
答案 1 :(得分:2)
你可以用MSBuild做一些非常巧妙的技巧。比方说,这就是你的项目。
的Program.cs:
namespace MyCustomBuild
{
class Program
{
static void Main(string[] args)
{
System.Console.WriteLine("Hello World");
}
}
}
如图所示创建MSBuild文件。 build.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
后,结果如下:
如何更好地发布我发布的内容:
要吸收很多东西,特别是如果你不熟悉MSBuild,但它是一个功能强大的程序,允许Visual Studio甚至无法想象的自定义!请注意,解决方案文件(.sln)是MSBuild文件,即使它不是xml。
希望这就是你要找的东西。我也建议您使用官方版本控制,正如其他人所提到的那样,但您似乎有一个您希望自动化的特定任务,这是MSBuild的强项。
答案 2 :(得分:0)
理想情况下,对项目进行版本控制应该在源代码管理系统中完成,因为Visual Studio本身只是一个IDE。
在不使用源控制系统的情况下,遗憾的是我不知道比目前正在做的更好的解决方案。