Pregunta

Estoy teniendo una configuración de uno de mis proyectos en TeamCity (v4.0) tema, especialmente cuando se trata de usar inicializadores de objeto.

El proyecto se basa bien normalmente, sin embargo, parecería que TeamCity transforma el fichero de construcción en algo que le gusta (alguna mutación MSBuild) y cuando se trata de compilar el código para una parte de la solución que se resiste cuando se ve un objeto inicializador .

Específicamente los errores son:

[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

Cuando miro más en esto parecería los lazos de problemas de nuevo a la transformación del fichero de construcción a formato TeamCity utilizando CSC desde el directorio marco v2.0.

¿Es posible compilar código mediante inicializadores de objeto (una característica .NET 3.0) con el compilador .NET 2.0 (yo no suponer, aunque pueda estar pasando algo), y si no, ¿alguien sabe una manera de forzar que utilice el compilador 3.0 (si existe) o el 3,5 compilador?

Para los interesados, el comando CSC está ejecutando es:

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

Gracias!

Actualización: Tengo parcialmente (es decir: no estoy feliz con él) arreglado el problema cambiando el corredor acumulación de Nant para comandar corredor - esto sólo se ejecuta el fichero de construcción Nant como estaba previsto y sin ningún tipo de manipulación, aunque el nivel de reacción es diferente. se agradecería cualquier otra sugerencia.

¿Fue útil?

Solución

¿Está utilizando el corredor sln2005 acumulación? Eso va a utilizar el csc 2.0. Compruebe su configuración de generación y cambiarlo al corredor sln2008 (ver http: / /www.jetbrains.net/confluence/display/TCD4/3.Build+Runners ). Eso debería utilizar el compilador 3.5.

Si está utilizando el corredor http://www.jetbrains.net/ confluencia / pantalla / TCD4 / MSBuild compruebe que ha establecido el número de versión 3.5 en la página de configuración.

Editar: después de comprobar para arriba en Nant Ver http://www.jetbrains.net/confluence/display/TCD4/NAnt_

donde dice: "De manera predeterminada, la tarea de NAnt msbuild utiliza MSBuild 2.0 (de Microsoft .NET Framework 2.0), sin embargo se puede utilizar MSBuild 3.5 (de Microsoft .NET Framework 3.5) si se agrega la propiedad teamcity_dotnet_use_msbuild_v35 con el valor de . fiel a su tarea msbuild en escritura de NAnt Por ejemplo: "

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

Otros consejos

Para la escritura de NAnt uno simplemente puede definir el sistema de teamcity_dotnet_use_msbuild_v35 propiedad en los ajustes de configuración de construcción ( http://www.jetbrains.net/confluence/display/TCD4/6.Properties+and+environment+variables ) para hacer que se ejecute msbuild 3.5.

Por otro lado, si el marco de NAnt objetivo se establece en net-3.5 (sólo para Nant 0.86 beta 1) msbuild debe tomarse de .NET 3.5 carpeta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top