MSbuild 4.0 не в состоянии скомпилировать проект .Net 3.5 - PullRequest
0 голосов
/ 19 января 2012

Я использую Msbuild 4.0.

В нашем проекте немногие решения имеют проекты .net 3.5.

Когда я компилирую его в Visual Studio, он работает.Если я собираю то же самое с помощью Msbuild, это не удается.

Ниже приведена проблема компиляции:

ошибка: компиляция не удалась.Невозможно загрузить один или несколько запрошенных типов.Получите свойство LoaderExceptions для получения дополнительной информации.Исключение из HRESULT: 0x80131515

Даже я пытался изменить

версию инструментов на 3,5

через дополнительные свойства элемента.[Я использую задачу Msbuild для построения своего решения]

Наша задача Msbuild выглядит следующим образом.

<Target Name="BuildDotNETSolutions" Condition="'$(Group)' != ''" DependsOnTargets="Init;GetNextVersionNumber">
    <!-- Complie solutions -->
    <!-- Version property is useful for changing the Wix Msi version-->
    <MSBuild Projects="@(Solution)" BuildInParallel="true"
                 Properties="Configuration=$(Configuration);PostbuildEvent=;Version=$(BuildNextVersionNumber)"
                 Condition="'%(Solution.Group)' == '$(Group)' And '%(Solution.Type)' == 'DotNET' And '%(Solution.IsRebuild)'=='$(IsRebuild)'">

      <Output
                      TaskParameter="TargetOutputs"
                      ItemName="BuildOutputs" />
    </MSBuild>

Мы передаем решения через файл свойств, как показано ниже

<Solution Include="$(Implementation)\MultiEvent.csproj;">
      <Group>Event</Group>
      <AdditionalProperties>
        ReferencePath=$(Implementation)\References;
        ToolsVersion=3.5;
      </AdditionalProperties>
      <IsRebuild>True</IsRebuild>
      <Type>DotNET</Type>
    </Solution>

1 Ответ

1 голос
/ 19 января 2012

Я не знаю, есть ли у вас какой-нибудь скрипт-бегун, который запускает MSBuild.Лично я пользуюсь NAnt и все работает нормально.Я читал (где-то), что MSBuild иногда делает глупости, и добавление свойства «TrackFileAccess» и установка его в «false» очень помогает.В моем случае это устранило проблему.

Если это может помочь, я включил задачу сборки NAnt.Я надеюсь, что это может быть полезно для вас.

<!--*******************************************************************************
Runs MSBuild to build the project solution

Arguments:
${MSBuild.exe}:  Path to MSBuild.exe
${project.solution}: the solution name to build
${buildconfiguration}: The build configuration to trigger the build
${build.dir} : The directory where to put builded files

********************************************************************************-->
<target name="run.msbuild" description="Rebuilds a given solution file">

<echo message="Rebuilding Solution ${project.solution}" />
<echo>${MSBuild.exe}</echo>

<exec program="${MSBuild.exe}">
       <arg value="${project.solution}"/>
    <arg line="/property:SignAssembly=${project.sign},AssemblyOriginatorKeyFile=${project::get-base-directory()}\${project.signature.file}" />
    <arg line="/property:OutDir=${build.dir}" />
    <arg line="/property:TrackFileAccess=false" />
    <arg line="/property:DebugType=${debug.type}" />
    <arg line="/property:Platform=&quot;Any CPU&quot;" />
    <arg line="/nologo" />
    <arg line="/verbosity:minimal" />
    <arg line="/property:Configuration=${buildconfiguration}"/>
</exec>

в случае сборки разработки, я установил следующие параметры:

<property name="buildconfiguration" value="Debug"/>
<property name="debug.type" value="full" />
...