2012-06-13 3 views
1

Google의 답변을 얻기에 적합한 키워드를 파악하지 못했을 수도 있지만 여기에 있습니다.Microsoft Visual Studio 2010에서 프로젝트의 연속 버전을 만드는 방법

나는 "Project"라는 프로젝트를 진행하고있다. 그것은 첫 번째 버전을 위해, 나는 그것을 "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 : enter image description here

방법을 만들기 위해 내가 더 나은 무엇을 게시 :

  1. 사용 MSBuild Extension Pack 어셈블리 정보

    <?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를 실행 한 후,이 결과입니다. 이렇게하면 AssemblyInfo.cs 파일 내에 정의 된 버전 정보를 변경할 수 있습니다. 또는 어셈블리 버전을 설정할 수 있습니다,하지만 지금 현재의 실행 파일의 파일 버전이 항상 1.0.0.0

  2. this one
  3. 당신은 복사 할 수 있습니다처럼 자동 증가 시스템의 일종을 구현 될 것이다는 GenerateApplicationManifest Task로 볼 수 모든 v 전화 디렉토리에 소스 파일을 사용하여 Copy Task

그것은 많은 당신이 MSBuild에 익숙하지 않은 특히,에 걸릴하지만 그것은 비주얼 스튜디오는 상상조차 할 수없는 사용자 정의 할 수있는 강력한 프로그램입니다! 솔루션 파일 (.sln)은 xml이 아니더라도 MSBuild 파일입니다.

바라건대 이것이 당신이 찾고있는 것입니다. 또한 다른 사람들이 언급했듯이 공식 버전 컨트롤을 사용하는 것이 좋지만 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 일 뿐이므로 프로젝트의 버전 관리는 소스 제어 시스템 내에서 수행해야합니다.

소스 제어 시스템을 사용하지 않는 상황에서 불행히도 현재 현재하고있는 것보다 나은 해결책을 알지 못합니다.

관련 문제