Инициализаторы объектов C # и ошибка компилятора v2.0 - PullRequest
0 голосов
/ 17 декабря 2008

У меня проблема с настройкой одного из моих проектов в TeamCity (v4.0), особенно когда речь идет об использовании инициализаторов объектов.

Проект работает нормально, однако может показаться, что 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

Когда я углубляюсь в это, мне кажется, что проблема связана с преобразованием файла сборки в формат TeamCity с использованием CSC из каталога фреймворка v2.0.

Можно ли скомпилировать код с использованием инициализаторов объектов (функция .NET 3.0) с помощью компилятора .NET 2.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, как и предполагалось, без каких-либо манипуляций, хотя Уровень обратной связи отличается. Любые другие предложения будут оценены.

Ответы [ 2 ]

3 голосов
/ 17 декабря 2008

Вы используете сборщик sln2005? Это будет использовать 2.0 CSC. Проверьте конфигурацию сборки и измените ее на бегунок sln2008 (см. http://www.jetbrains.net/confluence/display/TCD4/3.Build+Runners). Это должно использовать компилятор 3.5.

Если вы используете MSBuild Runner 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), если добавите свойство teamcity_dotnet_use_msbuild_v35 со значением true для вашей задачи msbuild в сценарии NAnt. Например: "

<msbuild project="SimpleEcho.v35.proj">
   <!-- this property enables MSBuild 3.5 -->
   <property name="teamcity_dotnet_use_msbuild_v35" value="true"/>
   ...
 </msbuild>
0 голосов
/ 30 декабря 2008

Для сценария NAnt можно просто определить системное свойство teamcity_dotnet_use_msbuild_v35 в настройках конфигурации сборки (http://www.jetbrains.net/confluence/display/TCD4/6.Properties+and+environment+variables), чтобы запустить msbuild 3.5.

С другой стороны, если целевая платформа NAnt установлена ​​на net-3.5 (только для NAnt 0.86 beta 1), msbuild следует взять из папки .NET 3.5.

...