문제

나는 새로운 (오래된?) Winforms 프로젝트를 "상속"했으며 빌드 서버 (bamboo)에 넣고 싶습니다. 이 빌드 서버에는 절대 최소값 (.NET 3.5 및 그다지 많지 않음) 만 설치되어 있으며, 그렇게 유지하고 싶습니다.

첫 번째 단계로, Infragistics 구성 요소에 대한 모든 어셈블리 파일 (*.dll)을 별도의 디렉토리로 추출하여 해당 로컬 디렉토리에서 참조했습니다 (GAC에 설치되는 대신). 작동합니다.

그러나 Bamboo (MSBuild 사용) 에서이 빌드를 실행하려고 할 때 계속 오류가 발생합니다.

속성 licenss.licx (1) : 오류 LC0004 : 예외는 'infragistics.win.ultrawintoolbars.ultratoolbarsmanager, infragistics2.win.ultrawintoolbars.v7.2, version = 7.2.20072.61, culture = neutral, publickeytoken = 7ddd5c316f2cd0cb'system을 만들었습니다. .componentModel.licenseException

약간의 인터넷 검색 후 licenses.licx 프로젝트의 파일은 여러 기계에 도구가 설치되는 것을 방지하기위한 일종의 라이센스 체계입니다.

그러나 내 빌드 서버 빌드가 작동하도록 어떻게 제거 할 수 있습니까? 없이 전체 Infragistics 구성 요소를 빌드 서버에 설치합니다 (이것은 아니다 옵션)??

  • 단순히 프로젝트에서 삭제하면 빌드가 작동하지 않을 수도 있지만 (아직 시도하지 않았을 수도 있지만) 설계 시간 경험이 어려움을 겪고 있지 않습니다 (두 가지 중 어느 것입니까?).
  • 내 디자인 시간 경험이 작동하도록 파일이 있으면 자동 빌드가 실행되는 것을 방지합니다 ....

흠 .... 클래식 캐치 -22- 이것에서 벗어나는 방법 ??

도움이 되었습니까?

해결책

이 문제를 해결하는 유일한 방법은 다음과 같습니다.

  • 절대적으로 빈 (0 바이트 길이) 파일 생성 licenses.licx 솔루션이있는 폴더에서
  • 빌드의 초기 단계에서 소스는 내 소스 저장소에서 추출됩니다.
  • 시간이 오면 빌드가 시작되기 직전 에이 빈 복사 licenses.licx 기존의 모든 것에 대해 licenses.licx 다양한 프로젝트에서 Properties 예배 규칙서

이것으로, 이제 나는 대화식 경험이 모두 작동합니다 (올바른 이후로 licenses.licx 파일이 있습니다), 내 자동 빌드도 파손되지 않습니다 (빈 이후로 licenses.licx 모든 실제 판사에 대해 복사 한 파일은 빌드에서 중단을 일으키지 않습니다)

약간 해킹 된 것 같지만 작동합니다. 그것이 어딘가에, 언젠가는 누군가를 도울 수 있기를 바랍니다.

업데이트: 나는 이것을 추가했다 BeforeBuild 비어있는 것을 복사하려면 MSBuild 빌드 파일로 밟습니다. *.licx 필요한 위치에 파일 :

<Target Name="BeforeBuild">
   <CreateItem Include="licenses.licx">
       <Output TaskParameter="Include" ItemName="EmptyLicensesLicx" />
   </CreateItem>

   <Copy SourceFiles="@(EmptyLicensesLicx)" 
         DestinationFolder="(your-target-folder-here)" 
         ContinueOnError="true" />

</Target>

이 *.licx 파일을 여러 곳에서 교체해야하므로 실제로 몇 가지가 있습니다. <Copy> 내 목표를 달성하기위한 과제.

다른 팁

우리는 다른 회사의 구성 요소를 가지고 있지만 접근 방식은 다음과 같습니다. .NET 라이센스 모델 타사 라이브러리에서 사용됩니다.

당신이 가지고 있다면 licenses.licx 파일 그런 다음 라이브러리는 아마도 사용합니다 .NET 라이센스 모델. 빌드 프로세스 중에 사용합니다 lc.exe 바이너리 라이센스 파일을 구축하는 유틸리티는 임베디드 리소스로 어셈블리에 포함됩니다.

해야 할 일 :

  1. 생성하다 YourApp.exe.licenses lc.exe를 사용하는 파일. 다른 방법은 포함 된 솔루션을 구축하는 것입니다 licenses.licx 그리고 그것을 얻으십시오 obj\Debug 또는 obj\Release 예배 규칙서. 이 단계는 구성 요소가 설치 및 등록되는 기계에서 수행해야합니다. 또한 우리의 경우와 같이 라이센스 코드를 입력해야 할 수도 있습니다.
  2. 프로젝트에서 licenses.licx 제외.
  3. 추가하다 YourApp.exe.licenses 임베디드 리소스로 투사합니다.
  4. 응용 프로그램의 .csproj를 열고 항목을 편집하십시오. YourApp.exe.licenses 파일. 당신은 이와 같은 것을 가질 것입니다 <EmbeddedResource Include="YourApp.exe.licenses" /> 변경해야합니다

    <EmbeddedResource Include="YourApp.exe.licenses" >
          <LogicalName>YourApp.exe.licenses</LogicalName>
    </EmbeddedResource>
    

    이는 Resource의 이름에서 네임 스페이스를 제외하는 데 필요합니다.

  5. 빌드 - 점검 - 커밋.

lc.exe가 어떻게 작동하는지 잘 모르겠지만 아마도 재건해야 할 것입니다. YourApp.exe.licenses 때때로 파일.

답변을 기반으로 팀 시티 프로젝트를 구축 할 수 있습니다. marc_s 즉 기존 라이센스 파일을 Blank Licenses.licx로 교체하여.

그러나 로컬 컴퓨터에서 인프라스틱 컨트롤이있는 ASPX 페이지를 열었을 때 또 다른 Hick가있었습니다. 로컬 컴퓨터에 Infragistics가 설치되어 있지 않지만 LICX.LICX가 비어 있으므로 오류가 발생합니다.

아래에서와 같이 이에 대한 해결 방법을 찾았습니다.

  • Team City에서 프로젝트를 구축하기 위해 Visual Studio에서 새로운 구성을 만들었습니다.

enter image description here

<Target Name="BeforeBuild" Condition="$(Configuration)==CI_TeamCity_Build">
    <CreateItem Include="$(MSBuildProjectDirectory)\licenses.licx">
      <Output TaskParameter="Include" ItemName="EmptyLicensesLicx" />
    </CreateItem>
    <Copy SourceFiles="@(EmptyLicensesLicx)" DestinationFolder="$(MSBuildProjectDirectory)\Properties\" ContinueOnError="true" />
</Target>
  • MARC_S에 의해 언급 된대로 'Preverbuild'대상 추가 추가로 빌드가 'CI_TeamCity_Build'를 사용할 때이 작업이 실행되고 '디버그'또는 '릴리즈'빌드에 대한 조건이 추가되었습니다.

  • Team City Build 구성은 "Solution Build Runner"단계에서 위의 구성을 사용하고 있습니다. CSPROJ 파일의 'PreciorBuild'대상으로 인해 라이센스 파일을 비어있는 파일로 바꾸고 빌드 성공을 거두었습니다.

  • 로컬 컴퓨터에서는 Licenses.LICX 파일을 공백으로 대체하지 않으므로 '디버그'또는 '릴리스'빌드를 계속 사용합니다. 모든 Infragistics 컨트롤은 문제없이 .aspx 페이지에 나타납니다.

최근에 TeamCity 9.1을 빌드 서버로 사용 하여이 문제를 해결했습니다.

원래 빌드 서버를 설정할 때 시스템에 Infragistics를 설치하고 싶지 않았으므로 필요한 어셈블리를 복사하여 확인한 참조 폴더를 만들었습니다. .))

프로젝트가 새로운 경로에서 어셈블리를 참조하는지 확인하십시오. 이것은 각 어셈블리에 대한 프로젝트 파일에 힌트 패트 항목을 만듭니다.

마지막으로 프로젝트 파일을 수동으로 편집하여 추가하십시오u003CPrivate> 진실u003C/Private> 각 참조. (사본을 현지 속성으로 설정하는 것만으로는 충분하지 않았습니다.)

위의 답변을 보완하려면 (즉, 빈 라이센스를 만들어 문제 해결)를 설치할 수 있습니다. emptylicensslicx Nuget 패키지는 빈 공간을 생성합니다 Licenses.licx 프로젝트에서 매번 컴파일하기 전에 (이는 작동하는 데 필요한 모든 것입니다).

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