문제

나는 하루 동안 이것을 이루어지지 않았지만 운이 좋지 않았습니다. MSBuild가 이전에 작동하는 데 사용되는 어셈블리 버전은 최근에 솔루션 파일을 프로젝트 루트 내의 별도 폴더로 옮겼으므로 버전 관리가 작동하지 않았습니다.

아래의 프로젝트 구조

코드 폴더

-> Projecta 폴더

-> projectb 폴더

-> projectc 폴더

-> 솔루션 폴더

* 이전에 솔루션 (.sln) 파일은 코드 폴더 아래에있었습니다.

MSBuild를 실행하면 아래 경고를 얻습니다.

어셈블리 정보 파일이 제공되지 않았습니다

아래의 빌드 로그의 절단 버전이 있습니다.

작업 공간 삭제

00:00 소스 디렉토리 삭제

00:00 작업 공간 만들기

01:14 작업 공간 가져 오기

00:00 버전 관리 어셈블리

00:00 AssemblyVersion 및 AssemblyFileVersion 어셈블리 버전 처리 : 빌드 정의에 포함 된 버전 번호 패턴 사용

00:00 모든 어셈블리 속성 값 설정 (B) 버전 관리 어셈블리 다음 패턴 : 조립전 (1.0.0.0) 및 AssemblyFileVersion (yyyy.mm.dd.b) 어셈블리 정보 파일 없음 제공

아래는 위의 로그를 생성하는 MSBuild 작업입니다.

  <local:VersionAssemblyInfoFiles 
    AssemblyFileVersionPattern="[AssemblyFileVersionPattern]" 
    AssemblyInfoFilePattern=" AssemblyInfoFilePattern]" 
    AssemblyVersionPattern="[AssemblyVersionPattern]" 
    BuildDirectory="[BuildDirectory]" BuildNumberPrefix=" 
   [BuildNumberPrefix]" BuildSettings="[BuildSettings]" 
    DisplayName="Versioning Assemblies" 
    DoCheckinAssemblyInfoFiles="[DoCheckinAssemblyInfoFiles]" 
    ForceCreateVersion="[ForceCreateVersion]" 
    sap:VirtualizedContainerService.HintSize="200,22" 
    mva:VisualBasic.Settings="Assembly references and imported namespaces 
   serialized as XML namespaces" UseVersionSeedFile="[UseVersionSeedFile]" 
   VersionSeedFilePath="[VersionSeedFilePath]" Workspace="[Workspace]" 
   xmlns:local="clr-namespace:TfsBuild.Versioning.Activities;
   assembly=TfsBuild.Versioning.Activities">

      <sap:WorkflowViewStateService.ViewState>
        <scg:Dictionary x:TypeArguments="x:String, x:Object">
          <x:Boolean x:Key="ShouldCollapseAll">False</x:Boolean>
          <x:Boolean x:Key="ShouldExpandAll">True</x:Boolean>
        </scg:Dictionary>
      </sap:WorkflowViewStateService.ViewState>
 </local:VersionAssemblyInfoFiles>
.

나는 또한 제안 된 여기 그러나 운이 없음을 알게되었습니다. 누군가가 올바른 방향으로 가리킬 수 있습니까? 나는 msbuild에 전문가가 없어.

미리 감사드립니다.

도움이 되었습니까?

해결책

다음 해결 방법을 수행했습니다. 모든 솔루션을 프로젝트의 루트 수준으로 이동하는 옵션이 없습니다.

a. 새로운 솔루션을 만듭니다. i.e someapp.lib.versioning.sln 이 솔루션은 루트 폴더 아래에서 살며 나머지 프로젝트 버전을 버전에만 사용합니다.

b. someapp.lib.versioning.sln의 프로젝트 (.csproj)는 프로젝트의 나머지 부분과 동일한 수준으로 살 것입니다.

새로운 구조가

코드 폴더

-> Projecta 폴더

-> projectb 폴더

-> projectc 폴더

-> 솔루션 폴더

-> someapp.lib.versioning.sln

-> someapp.lib.versioning 폴더

c. 이제 솔루션 폴더 내의 솔루션 중 하나에서 someapp.lib.versioning.proj를 참조합니다. 즉, someapp.lib.versioning.proj는 두 개의 솔루션을 히트에 첨부했습니다.

d. 빌드 버전을 표시하는 프로젝트는 someapp.lib.versioning.proj

에서 i.e 클래스 파일을 사용합니다.

표준 빌드 버전에 따라 someapp.lib.versioning.proj는 올바른 빌드 버전을 가질 것입니다 (someapp.lib.versioning.sln은 루트 레벨에 있음)

비고 : 이것은 이상적인 해결책이 아니라, 이상적인 해결책이 아닙니다. 이는 프로젝트의 모든 어셈블리 버전을 버전하지 않습니다. 예를 들어, 어떤 어셈블리가 어떤 버전을 구축했는지 알고 싶다면이 작업이 작동하지 않을 것입니다. 솔루션의 빌드 버전을 얻는 것은 단지 홀더입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top