And*_*ews 1 postsharp visual-studio-2010 .net-3.5 teamcity-5.1
我有一个项目,目前使用VS 2010(可能使用MSBUILD v4.0)在我的开发机器上愉快编译,但它在Team City中的MSBUILD v3.5下运行(在基于Win 2003服务器w/.NET 2的VM上运行) ,3.5和4安装).该项目新升级到2010年,现在CI构建失败了.我用Google搜索了这一切并尝试了一切显而易见的事情(加上一些没有意义的事情)并且没有任何影响结果.
该项目失败,出现一系列错误,如下所示:
error CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?)
Run Code Online (Sandbox Code Playgroud)
解决方案中有许多其他项目使用System.Core,System.Data.Linq和System.Xml.Linq,它们似乎都没有问题地编译.有问题的项目是一个Web应用程序,它的配置/ system.web/compilation/assemblies部分中包含以下设置:
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
<add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Run Code Online (Sandbox Code Playgroud)
在同一个文件中加上以下内容:
<system.codedom>
<compilers>
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
<providerOption name="CompilerVersion" value="v3.5"/>
<providerOption name="WarnAsError" value="false"/>
</compiler>
</compilers>
</system.codedom>
Run Code Online (Sandbox Code Playgroud)
有问题的项目是IIRC,我解决方案中唯一一个既是WebApplication也正在由PostSharp(v1.5)进行后期处理的项目.PostSharp在.csproj中配置如下:
<PropertyGroup>
<DontImportPostSharp>True</DontImportPostSharp>
<PostSharpUseCommandLine>True</PostSharpUseCommandLine>
</PropertyGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(POSTSHARP15)\PostSharp-1.5.targets" />
Run Code Online (Sandbox Code Playgroud)
我不确定这是如何相关的,但它就是为了以防万一.
有关导致此错误的原因或如何解决此问题的任何想法?
TIA
解决了:
添加对web.config文件的引用是没有意义的,因为PostSharp在ASP.NET执行任何自己的编译之前输入图片,因此缺少对System.Core引用的引用会导致系统失败(我不是确定为什么).
解决方案是手动编辑失败项目的csproj文件,并手动将对System.Core的引用添加到项目中.您无法从解决方案资源管理器中执行此操作,因为它不允许添加应由 MSBUILD自动添加的引用.
仍然不确定为什么它首先失败了,但至少它现在编译并再次通过测试.
| 归档时间: |
|
| 查看次数: |
1798 次 |
| 最近记录: |