2010-07-23 2 views
1

Visual Studio 2005에서 2010으로 마이그레이션 할 때 솔루션이 있습니다. 개발자 컴퓨터의 IDE 내부에는 문제가 없지만 (CC.NET과 함께) 서버를 구축하면 오류가 발생합니다.MSBUILD를 사용하여 프로젝트를 빌드하면 지정된 프로젝트가 아닙니다. (.NET 4)

약 10 개의 프로젝트가 있는데 그 중 3 개는 서명되지 않은 참조를 사용하기 때문에 강력한 이름이 아닙니다.

그 중 하나 (서명 됨)에는 서명 된 프로젝트 중 하나 인 InternalsVisible이 있습니다.

IDE에서는 Debug/Release 구성을 사용합니다.이 구성은 강력한 이름을 지정할 모든 프로젝트에 지연 서명을합니다.

또한 해당 프로젝트 만 빌드하는 Debug_Signed 및 Debug_Unsigned 구성 (및 해당 Release_ *)도 만들었습니다.

내 빌드 서버에서 실제 개인 키를 사용하여 Debug_Signed 구성을 먼저 작성한 다음 SingAssembly = false로 Debug_Unsigned 구성에서 MSBUILD를 다시 호출합니다.

이것은 .NET 2.0 SDK를 사용하여 완벽하게 작동하지만 이제는 첫 번째 MSBUILD가 제대로 작동하지만 두 번째 MSBUILD는 서명 된 프로젝트를 다시 작성하려고 시도합니다 (서명되지 않은 프로젝트가 참조하기 때문에).

오류 CS0281 : 친구 액세스 'Sic.Gateway.Customers, 한 PublicKey = 0024 ... 4bbe'부여되었지만 출력 조립체 인 InternalsVisibleTo에게 체결 조립체를 구비 한 조립체 생성 어셈블리 서명되지 않은 상태 'Sic.Gateway.Customers, Version = 2.0.0.796, Culture = 중립, PublicKeyToken = null'이라는 이름을 갖습니다. 'Sic.Gateway.Customers, PublicKey = 0024 ... 4bbe'에 대한 참조를 추가하거나 일치하도록 출력 어셈블리 이름을 변경하십시오.

두 번째 MSBUILD는 처음 MSBUILD에서 작성한 참조 어셈블리를 사용하여 다시 작성하려고합니다.

빌드 서버에는 SDK가 아닌 .NET 4.0 런타임 만 있고 SQL/CLR 및 웹 응용 프로그램 용으로 두 개의 .targets 파일을 복사해야했습니다. 그러나 모든 것이 잘되기 때문에 문제가 될 것이라고 생각하지 않습니다.

누구에게 내가 무엇을 할 수 있는지 알고 있습니까?

감사합니다,

루이스 알론소 라모스

+0

내가 작성한 순서를 전환하면 어떻게되는지 궁금합니다. –

+0

@Sayed : 서명되지 않은 프로젝트가 서명 된 프로젝트에 의존하기 때문에 할 수 없습니다 (서명되지 않은 프로젝트에 의존하는 경우 어셈블리에 서명 할 수 없음). –

+0

나는이 문제를 해결했다.이것은 내가 무슨 짓을 : 나는 세 가지 속성을 지정하고 모두 서명되지 않은 서명 어셈블리를 MSBUILD를 실행하는 경우 : SignAssembly을 = 참/거짓, DelaySign = 거짓; AssemblyOriginatorKeyFile = D : \ 어쩌구 \ blah.snk 것은 이러한 속성을 전체 솔루션에 적용하여 개별 프로젝트의 설정을 재정의합니다. SignAssembly를 지정하지 않고 DelaySign 및 키 파일 속성 만 지정했습니다. 그런 식으로 서명 할 어셈블리는 여전히 새로운 비 지연 서명 설정으로 서명되며 서명해서는 안되는 서명은 그렇지 않습니다. –

답변

1

(위 루이스 '의견에서 답변으로 복사)

중 하나를 서명 또는 서명 어셈블리 나는 세 가지 속성 지정되었다위한 MSBUILD를 실행 :

SignAssembly=true\false;DelaySign=False;AssemblyOriginatorKeyFile=D:\blah\blah.s‌​nk 

것은 각 솔루션의 설정을 재정의하면서 전체 솔루션에 적용되는 이러한 속성입니다. 내가 한 것은 SignAssembly을 지정하지 않고 의 DelaySign 및 키 파일 속성 만 지정했습니다. 그런 식으로 서명 할 어셈블리는 여전히 서명되지 않고 (새로운 비 지연 서명 설정을 사용하여) 서명되지 않아야하는 어셈블리는 서명되지 않습니다.

관련 문제