문제

TeamCity (v4.0)에서 프로젝트 중 하나를 설정하는 데 문제가 있습니다. 특히 객체 초기화기를 사용할 때.

이 프로젝트는 정상적으로 잘 구축되지만 TeamCity는 빌드 파일을 좋아하는 것 (일부 msbuild mutation)으로 변환하는 것처럼 보이며 객체 이니셜 라이저를 볼 때 솔루션의 일부에 대한 코드를 컴파일하는 데있어서.

특히 오류는 다음과 같습니다.

[11:16:21]: ErrorView.xaml.cs(22, 187): error CS1026: ) expected
[11:16:21]: ErrorView.xaml.cs(22, 208): error CS0116: A namespace does not directly contain members such as fields or methods
[11:16:21]: ErrorView.xaml.cs(27, 16): error CS1518: Expected class, delegate, enum, interface, or struct
[11:16:21]: ErrorView.xaml.cs(35, 16): error CS1518: Expected class, delegate, enum, interface, or struct
[11:16:21]: ErrorView.xaml.cs(46, 91): error CS1031: Type expected
[11:16:21]: ErrorView.xaml.cs(46, 119): error CS0116: A namespace does not directly contain members such as fields or methods
[11:16:21]: ErrorView.xaml.cs(48, 17): error CS1022: Type or namespace definition, or end-of-file expected

이것을 더 살펴보면 v2.0 프레임 워크 디렉토리의 CSC를 사용하여 빌드 파일을 TeamCity 형식으로 변환하는 것 같습니다.

.NET 2.0 컴파일러를 사용하여 Object Initializers (a .NET 3.0 기능)를 사용하여 코드를 컴파일 할 수 있습니까? 3.0 컴파일러 (존재하는 경우) 또는 3.5 컴파일러?

관심있는 사람들의 경우 실행되는 CSC 명령은 다음과 같습니다.

C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Csc.exe /noconfig /nowarn:1701,1702 /errorreport:prompt /warn:4 /define:DEBUG;TRACE 
/reference:..\..\..\build\blah.Logging.dll /reference:..\..\..\build\blah.Presentation.Interfaces.dll 
/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Microsoft.VisualBasic.dll /reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationCore.dll" 
/reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.dll" 
/reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\PresentationFramework.Luna.dll" 
/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Data.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Design.dll 
/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.dll /reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Drawing.dll 
/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Web.dll
/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Windows.Forms.dll 
/reference:C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll 
/reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\UIAutomationProvider.dll"
/reference:"C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.0\WindowsBase.dll" /debug+ /debug:full /filealign:512 
/keyfile:..\..\..\resources\blah.snk /optimize- /out:obj\Debug\blah.dll 
/resource:obj\Debug\blah.UserInterface.Properties.Resources.resources
/resource:obj\Debug\blah.UserInterface.blah.exe.license /target:library 
/win32icon:blah.ico SignalStrengthIndicator.xaml.cs TrayNotifier.xaml.cs ConnectedView.xaml.cs ConnectionProgressView.xaml.cs NetworkPasswordView.xaml.cs 
TrayProgress.xaml.cs NetworkConnectionView.xaml.cs ClassFiles\NetworkTypeConverter.cs 
ClassFiles\SecurityImageConverter.cs ClassFiles\SecurityTooltipConverter.cs 
ClassFiles\SignalStrengthTooltipConverter.cs ClassFiles\SignalVisibilityConverter.cs 
ClassFiles\SynchronizedObservableCollection.cs ConnectionOption.xaml.cs 
DisconnectionProgressView.xaml.cs ErrorView.xaml.cs ..\..\..\config\assemblyversion.cs 
Properties\Resources.Designer.cs Properties\Settings.Designer.cs

감사!

업데이트 : 나는 부분적으로 (읽기 : 나는 그것에 만족하지 않습니다) 빌드 러너를 Nant에서 명령 러너로 변경하여 문제를 해결했습니다. 이것은 피드백 레벨이 있지만 조작없이 의도 된대로 Nant 빌드 파일을 실행했습니다. 다른. 다른 제안은 감사 할 것입니다.

도움이 되었습니까?

해결책

SLN2005 빌드 러너를 사용하고 있습니까? 2.0 CSC를 사용합니다. 빌드 구성을 확인하고 SLN2008 러너로 변경하십시오 ( http://www.jetbrains.net/confluence/display/tcd4/3.build+runners ). 3.5 컴파일러를 사용해야합니다.

MSBuild 러너를 사용하는 경우 http://www.jetbrains.net/confluence/display/tcd4/msbuild구성 페이지에서 버전 번호를 3.5로 설정했는지 확인하십시오.

편집 : Nant를 확인한 후 참조하십시오 http://www.jetbrains.net/confluence/display/tcd4/nant_

"기본적으로 Nant MSBuild 작업은 MSBuild 2.0 (Microsoft .NET Framework 2.0)을 사용하지만 MSBUILD 3.5 (Microsoft .NET Framework 3.5)를 사용할 수 있습니다. Nant 스크립트의 MSBuild 작업. 예를 들어 : "

<msbuild project="SimpleEcho.v35.proj">
   <!-- this property enables MSBuild 3.5 -->
   <property name="teamcity_dotnet_use_msbuild_v35" value="true"/>
   ...
 </msbuild>

다른 팁

nant 스크립트의 경우 하나는 시스템 속성을 정의 할 수 있습니다. TeamCity_DOTNET_USE_MSBUILD_V35는 빌드 구성 설정에서 ( http://www.jetbrains.net/confluence/display/tcd4/6.properties+및 environment+variables) MSBuild 3.5를 실행하게합니다.

반면에 NANT 대상 프레임 워크가 NET-3.5로 설정된 경우 (NANT 0.86 베타 1) MSBuild는 .NET 3.5 폴더에서 가져와야합니다.

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