2012-06-13 3 views
1

Возможно, я просто не могу понять правильные ключевые слова, чтобы получить ответ от Google, но здесь.Как сделать следующую версию проекта в Microsoft Visual Studio 2010

Скажите, у меня есть проект Я работаю над названием «Проект». Для первой версии я сохранил ее в папке «Project_Version1» и получил название своего решения, проекта, сборки exe и т. Д. Как «Project_Version1».

Теперь я хочу сделать следующую версию проекта и назвать его «Project_Version2». Чтобы сделать это в настоящее время, я копирую исходную папку и переименовываю ее в «Project_Version2», и я хочу переименовать в нее все другие внутренние вещи. В настоящее время я должен сделать это с комбинацией изменения имен в проводнике Windows и некоторыми страницами свойств в моем решении.

Должен быть лучший способ сделать это. Как кто-то делает вторую версию своего проекта и хранит его файлы отдельно от первой версии? Есть ли способ переименовать соответствующие файлы, содержащие номера версий?

ответ

2

Вы можете сделать некоторые довольно аккуратные трюки с помощью MSBuild. Скажем, например, что это ваш проект.

Программа.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, это результат: enter image description here

способов сделать то, что я писал еще лучше:

  1. Используйте MSBuild Extension Pack AssemblyInfo. Это позволит вам изменить информацию о версии, если она определена внутри файла AssemblyInfo.cs. Или вы можете посмотреть в GenerateApplicationManifest Task, который можно установить версии сборки, но прямо сейчас версию файла исполняемого файла всегда будет 1.0.0.0
  2. Реализовать свой род систему автоинкремента как this one
  3. Вы можете скопировать все исходные файлы в версированном каталог с помощью Copy Task

это много, чтобы принять, особенно если вы не знакомы с MSBuild, но это мощная программа, которая позволяет настраивать, что Visual Studio не может даже вообразить! Обратите внимание: файл решения (.sln) является файлом MSBuild, хотя это не xml.

Надеюсь, это то, что вы ищете. Я также рекомендую использовать официальный контроль версий, как это упоминали другие, но у вас, похоже, была специальная задача, которую вы хотели автоматизировать, что является сильной стороной MSBuild.

+0

Я думаю, что это может быть то, что мне нужно, но это займет немного, чтобы полностью понять, что происходит. Я использую контроль версий (в настоящее время это локальный репозиторий tortoiseSVN), но я в основном использовал его для того, чтобы иметь возможность откатываться при возникновении ошибок или разрыве функциональности или что-то в этом роде, а не для официального управления версиями. Или я смешиваю контроль версий и контроль источника там? Схема, о которой я прошу, в основном заключалась в том, чтобы разорвать и сохранить версии, которые были официально выпущены в дикую природу, в то время как я использую источник управления для программирования между выпущенными версиями. – Xantham

+0

Как вы описали, MSBuild действительно выполняет то, что вы хотите, поэтому я бы воспользовался этим. MSBuild и git (или другое подобное программное обеспечение) могут сосуществовать. –

4

Действительно, есть лучший способ сделать это, это называется контролем версий.
Если вы проверите свой источник на TFS (или git или любой другой SCM software), все версии будут отслеживаться с течением времени.

Если вам необходимо одновременно поддерживать несколько версий (например, для клиентской базы, где клиенты медленно переносятся на край кровотечения, и исправления необходимы для устранения критических проблем в более старых поддерживаемых версиях), вы можете сохранить эти версии как ветви и выборочно слияние изменений.

Если вы решаете, что управление версиями подходит для управления вашими версиями (оно также приносит много других преимуществ), рассмотрите возможность чтения некоторых сообщений, таких как this git tutorial или why use version control.


Если вы действительно не можете использовать систему контроля версий, по какой-то причине, я предлагаю попробовать ссылаться на столько, сколько вы можете, используя языковые конструкции, которые могут быть легко изменены (например, с помощью C# и разумным IDE, быстрыми рефакторинг или с другими языками, некоторые строгие дедупликации данных, специфичных для версии).
В идеале у вас будет только одно определение версии для вашего кода вместе с определением версии в файлах проекта (которое может быть установлено как переменная сборки для быстрого изменения).

В этом случае вы должны скопировать проект, изменить версию кода и переменную версии для проекта и, предположительно, использовать относительные пути и т. Д. (Без жестко запрограммированных версий!), Быстрое переименование нескольких переменных должно пойди.

В идеале основная часть имен файлов не будет ссылаться на эту версию. Единственное, что ссылается на версию, скорее всего, будет содержать каталог, файлы проекта/решения и несколько отдельных ссылок в вашем коде.

0

В идеале, управление версиями вашего проекта должно осуществляться в рамках системы управления версиями, поскольку Visual Studio сама по себе является только средой IDE.

В ситуации, когда вы не используете систему управления источниками, к сожалению, я не знаю лучшего решения, чем то, что вы сейчас делаете.

Смежные вопросы