我正在尝试构建一个.NET项目,我不知道它如何通过Jenkins.Anyhow中的MSbuild插件工作,这是针对框架3.5以及我在构建服务器中使用的内容。当我构建时,我得到以下错误,不知道如何解决..
"c:\jenkins\workspace\Master.sln" (default target) (1) ->
"c:\jenkins\workspace\FactivaWebUI01-Fornax\UIVirtualServices\UIVirtualServices.csproj" (default target) (16) ->
(CoreCompile target) ->
CSP\Communicator\Authors\CommunicatorAuthorService.cs(36,78): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(66,33): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(67,29): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(68,29): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(69,28): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(70,43): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(71,41): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(72,37): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(73,56): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\CommunicatorAuthorService.cs(156,85): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\ICommunicatorAuthorService.cs(32,33): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\ICommunicatorAuthorService.cs(33,29): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\ICommunicatorAuthorService.cs(34,29): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\ICommunicatorAuthorService.cs(35,28): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\ICommunicatorAuthorService.cs(36,43): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\ICommunicatorAuthorService.cs(37,41): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\ICommunicatorAuthorService.cs(38,37): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Authors\ICommunicatorAuthorService.cs(39,56): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Charts\CommunicatorChartService.cs(54,68): error CS0241: Default parameter specifiers are not permitted
CSP\Communicator\Charts\CommunicatorChartService.cs(54,109): error CS0241: Default parameter specifiers are not permitted
184 Warning(s)
20 Error(s)
有趣的是,当我使用visual studio 2013构建同一个项目时,它构建得非常好。
csproj文件:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ProjectExtensions>
<VisualStudio>
<FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
<WebProjectProperties>
<StartPageUrl>
</StartPageUrl>
<StartAction>CurrentPage</StartAction>
<AspNetDebugging>True</AspNetDebugging>
<SilverlightDebugging>False</SilverlightDebugging>
<NativeDebugging>False</NativeDebugging>
<SQLDebugging>False</SQLDebugging>
<ExternalProgram>
</ExternalProgram>
<StartExternalURL>
</StartExternalURL>
<StartCmdLineArguments>
</StartCmdLineArguments>
<StartWorkingDirectory>
</StartWorkingDirectory>
<EnableENC>False</EnableENC>
<AlwaysStartWebServerOnDebug>True</AlwaysStartWebServerOnDebug>
</WebProjectProperties>
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
</Project>
根据建议,我尝试使用MsBuild 4.0构建它只是为了收到以下错误:
(GenerateSerializationAssembliesForAllTypes target) ->
SGEN : error : An attempt was made to load an assembly with an incorrect format: C:\Windows\Microsoft.NET\Framework64\v2.0.50727\mscorlib.dll. [c:\jenkins\workspace\FactivaWebUI01-Fornax\MessageModel\MessageModel.csproj]
129 Warning(s)
1 Error(s)
答案 0 :(得分:2)
我非常怀疑您的.NET项目实际上并不是针对.NET Framework 3.5中包含的C#版本,而是针对.NET Framework 4中包含的C#4.0。请参阅this question和{{ 3}},例如,讨论相同的错误。关于this question有一个很好的答案。
您能否提供.NET项目的.csproj
项目文件中的框架定位信息以进行验证?它是一个XML文件,您应该在顶部附近找到目标框架信息,例如:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<!-- Some elements omitted -->
<TargetFrameworkVersion>v4.5.1</TargetFrameworkVersion>
更新:感谢您提供.csproj
个文件。这有点帮助。请注意,在该文件中,目标.NET Framework版本为3.5(<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
)。现在,因为你的项目中有C#4.0代码(例如你收到警告的默认参数),你必须使用C#4.0编译器和 将目标框架版本更新为4.0 (或更高版本)。您可以通过Visual Studio中的项目属性最安全地执行此操作。我不建议手动编辑.csproj
文件。
简而言之,您的问题是由于使用MSBuild 4.0不足以针对4.0框架编译项目。它可能使用较新的编译器,它负责一些(但是不是全部!)语言功能,但它不会更新项目使用的程序集。