Сборка .NET с использованием Jenkins Ошибка MSBuild Спецификаторы параметров по умолчанию не разрешены

Я пытаюсь создать проект .NET, который я понятия не имею, как он работает через плагин MSbuild в Jenkins. Во всяком случае, это нацелено на платформу 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)

person Scooby    schedule 05.08.2014    source источник


Ответы (1)


Я очень подозреваю, что ваш проект .NET на самом деле нацелен не на версию C#, включенную в .NET Framework 3.5, а скорее на C# 4.0, которая включена в .NET Framework 4. См. этот вопрос и этот вопрос, например, где та же ошибка обсуждается. Есть хороший ответ относительно версий компилятора C# и соответствующих версий .NET Framework.

Можете ли вы предоставить информацию о целевой платформе из файла проекта .csproj вашего проекта .NET для проверки? Это файл 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. Он может использовать более новый компилятор, который заботится о некоторых (но не обо всех! ) функций языка, но он не будет обновлять сборки, используемые в вашем проекте.

person Lars Kemmann    schedule 05.08.2014
comment
Что ж, это, безусловно, прояснило несколько ошибок и предупреждений. :) Теперь, с какой стати он пытается загрузить .NET 2.0 mscorlib? Не могли бы вы предоставить не только часть файла .csproj, а целиком? Удаляйте любые включенные ссылки на исходные файлы (скомпилированные файлы и файлы содержимого) только в случае необходимости, но в этом случае все остальное важно. (И вы не предоставили ту часть, которая нам действительно нужна, в первый раз.) Мы ищем версию целевой платформы проекта и ссылки для начала. - person Lars Kemmann; 06.08.2014