0

特にオブジェクト初期化子の使用に関して、TeamCity (v4.0) でプロジェクトの 1 つを設定する際に問題が発生しています。

プロジェクトは正常にビルドされますが、TeamCity はビルド ファイルを好みのもの (MSBuild の突然変異) に変換し、ソリューションの一部のコードをコンパイルする際に、オブジェクト初期化子が表示されると中断します。

具体的には、エラーは次のとおりです。

[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 コンパイラでオブジェクト初期化子 (.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 からコマンド ランナーに変更することで問題を部分的に修正しました (読んだ: 満足していません)。フィードバック レベルは違う。他の提案をいただければ幸いです。

4

2 に答える 2

3

sln2005ビルドランナーを使用していますか?2.0cscを使用します。ビルド構成を確認し、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_を参照してください

「デフォルトでは、NAntmsbuildタスクはMSBuild2.0(Microsoft .NET Framework 2.0から)を使用しますが、teamcity_dotnet_use_msbuild_v35プロパティにtrueの値を追加すると、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>
于 2008-12-17T01:50:20.683 に答える
0

NAnt スクリプトの場合、ビルド構成設定 ( http://www.jetbrains.net/confluence/display/TCD4/6.Properties+and+environment+variables )でシステム プロパティ teamcity_dotnet_use_msbuild_v35 を定義するだけで、msbuild 3.5 を実行できます。

一方、NAnt ターゲット フレームワークが net-3.5 に設定されている場合 (NAnt 0.86 beta 1 のみ)、msbuild は .NET 3.5 フォルダーから取得する必要があります。

于 2008-12-30T13:08:06.573 に答える