솔루션 전체에서 균일 한 버전 관리를위한 공유 AssemblyInfo
이 기술에 대해 읽었습니다. VS 프로젝트의 공유 어셈블리 정보-JJameson 's Blog
기본적으로 어셈블리에 대한 버전 정보가 포함 된 SharedAssemblyInfo.cs를 만들고이 파일을 솔루션의 모든 프로젝트에 대한 링크로 추가하여 실제 파일이 디스크의 한 위치에만 상주하는 것을 의미합니다.
내 질문은 두 가지 시나리오를 다룹니다.
이 메커니즘을 사용하지 않는 기존 솔루션 : 모든 프로젝트에 ShareAssemblyInfo를 쉽게 추가 할 수있는 방법이 있습니까? (내가 50 개의 프로젝트에 대한 해결책이 있다고 말하자).
새 프로젝트를 만들 때 기본적으로 새 AssemblyInfo.cs가 만들어집니다. 그러나 SharedAssemblyInfo에도 자동으로 연결하고 싶습니다.
이에 대한 해결책이 있습니까? 일반적인 관행은 무엇입니까?
첫 번째 문제는 여러 파일을 한 번에 처리하고 찾기 / 바꾸기 할 수있는 간단한 텍스트 편집기로 해결할 수 있습니다. 모든 csproj를 열고 문자열 <Compile Include="Properties\AssemblyInfo.cs" />
을
<Compile Include="..\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
또는 다음과 같은 유틸리티를 작성할 수 있습니다.
var files = Directory.GetFiles(yourSolutionDir, "*.csproj", SearchOption.AllDirectories);
foreach (var f in files) {
string contents = File.ReadAllText(f);
string result = contents.Replace("<Compile Include=\"Properties\\AssemblyInfo.cs\" />", putSecondStringHere_ItIsJustTooLong); // :)
File.WriteAllText(f, contents);
}
두 번째 질문에 관해서는 ... Visual Studio 사용자 지정 프로젝트 템플릿을 살펴볼 수 있지만 노력할만한 가치가 있는지 모르겠습니다. 대신 이것을 확인할 IMO 쓰기 테스트를해야합니다. 훨씬 간단하고 결과는 실제로 거의 동일합니다.
UPD : 일부 사용자 지정 규칙에 대해 솔루션 / 프로젝트 파일을 확인하기위한 테스트 작성 정보. 기본적으로 sln / csproj 형식은 많은 노력 없이도 구문 분석 할 수있을만큼 간단합니다. 따라서 SharedAssemblyInfo.cs
모든 프로젝트에 연결 하고 싶다면 csproj를 구문 분석하고 확인하십시오. 그런 다음 해당 검사기를 빌드 서버에 넣고 각 빌드에서 실행하십시오. 현재 이러한 시스템이 작동하고 있으며 작성하는 데 약 이틀이 걸리지 만 더 많은 비용을 절약 할 수 있습니다 (더 정교한 규칙과 다중 솔루션 프로젝트가 있으므로 노력할만한 가치가 있습니다).
지금은이 검사에 대해 자세히 쓰지 않겠지 만 (그렇게 짧지는 않습니다) 곧 블로그 게시물을 작성할 것입니다. 아마도 이번 주 말까지 말입니다. 그래서 관심이 있으시면 곧 내 블로그를 확인하십시오 :)
UPD : 여기 있습니다.
VS 2010에서 공유 어셈블리 정보 파일에 링크 할 수 있습니다. Ashish Jain에는 이에 대한 좋은 블로그 게시물 이 있습니다 . 솔루션의 프로젝트간에 어셈블리 버전 공유 .
솔루션 수준에서 공유 어셈블리 정보 파일을 만든 후 프로젝트에서이 파일에 연결하는 방법은 다음과 같습니다.
공유 어셈블리 파일을 추가하려는 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 추가-> 기존 항목 ...을 선택합니다.
솔루션 폴더에서 "SharedAssemblyInfo.cs"파일을 선택합니다.
추가 대신 추가 옆의 화살표를 클릭하고 "링크로 추가"를 클릭합니다.
동일한 폴더에서 AssemblyInfo.cs와 함께 추가 된 링크 파일을 아래로 끕니다.
공유 어셈블리 파일을 추가하려는 모든 프로젝트에 대해 1-4 단계를 반복합니다.
나는 이것을 시도했고 작동합니다.
파일 버전을 자동으로 올리는 응용 프로그램을 만들었습니다.
- Applicaiton 다운로드
- 사전 빌드 이벤트 명령 줄에 다음 줄을 추가합니다.
C : \ temp \ IncrementFileVersion.exe $ (SolutionDir) \ Properties \ AssemblyInfo.cs 프로젝트 빌드 간단하게 유지하기 위해 앱은 오류가있는 경우에만 메시지를 표시하고 제대로 작동하는지 확인하려면 파일 버전을 확인해야합니다. '조립 정보'
참고 : 필드를 채우려면 Visual Studio에서 '어셈블리 정보'단추에 대한 솔루션을 다시로드해야하지만 출력 파일에는 업데이트 된 버전이 있습니다.
제안 및 요청이 있으시면 telson_alva@yahoo.com으로 이메일을 보내주십시오.
C # 및 F # 프로젝트가 모두있는 솔루션에는 작동하지 않습니다. C # 프로젝트는 공유 된 f # 파일을 참조 할 수 없으며 그 반대의 경우도 마찬가지입니다.
The only option in this case is to make a separate project and refer to it from other projects
'Program Tip' 카테고리의 다른 글
커밋 된 스냅 샷 및 스냅 샷 격리 수준 읽기 (0) | 2020.11.11 |
---|---|
C ++ RTTI를 사용하는 것이 바람직하지 않게 만드는 이유는 무엇입니까? (0) | 2020.11.11 |
이미지가있는 버튼, ImageButton 및 클릭 가능한 ImageView의 차이점은 무엇입니까? (0) | 2020.11.11 |
MySQL Workbench 다크 테마 (0) | 2020.11.11 |
JSP 용 클래스를 컴파일 할 수 없음 : java.util.Map $ Entry 유형을 분석 할 수 없습니다. (0) | 2020.11.11 |