Изменить AssemblyName через MSBuild Target - PullRequest
0 голосов
/ 24 октября 2018

Я пытаюсь настроить цель MSBuild в моем файле Project.csproj.Цель, называемая «Тест», вызывается с помощью следующей команды:

msbuild.exe / target: Тест

Однако я не могу понять, как изменить AssemblyName(оригинальное имя сборки MyProject), для этой цели.Мой код выглядит следующим образом:

<Target Name="Test">
  <PropertyGroup>
    <PublishUrl>D:\PublishLocation\ClickOnce Setup\</PublishUrl>
  </PropertyGroup>
  <MSBuild Projects="$(ProjLocation)\$(ProjectName).csproj" Properties="ProductName=$(ProductName) (Test); AssemblyName=MyProjectTest; PublishUrl=$(PublishUrl)" Targets="Publish" />
  <ItemGroup>
    <SetupFiles Include="$(ProjPublishLocation)\*.*" />
    <UpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*" />
  </ItemGroup>
  <Copy SourceFiles="@(SetupFiles)" DestinationFolder="D:\PublishLocation\ClickOnce Setup\" />
  <Copy SourceFiles="@(UpdateFiles)" DestinationFolder="D:\PublishLocation\ClickOnce Setup\Application Files\%(RecursiveDir)" />
</Target>

Если я удаляю AssemblyName=MyProjectTest; из кода, он работает нормально.Если я запускаю его, как указано выше, я получаю следующую ошибку:

"C: \ Users \ ... \ MyProject \ MyProject.csproj" (цель тестирования) (1) -> "C:\ Users \ ... \ MyProject \ MyProject.csproj "(цель публикации) (1: 2) ->

(цель CoreCompile) ->
Models \ SessionModel.cs (207,51):ошибка CS1528: ожидается;или = (невозможно указать аргументы конструктора в объявлении) [C: \ Users \ ... \ MyProject \ MyProject.csproj]

(... и многое другое, что более или менее одинаково)

ОБНОВЛЕНИЕ

Я нашел еще несколько, возможно, более интересных, предупреждений в выводе сборки:

"C: \ Users\ ... \ MyProject \ MyProject.csproj "(быстрая цель) (1) ->" C: \ Users \ ... \ MyProject.csproj "(цель публикации) (1: 2) -> (цель ResolveAssemblyReferences) ->
C: \ Program Files (x86) \ MSBuild \ 14.0 \ bin \ Microsoft.Common.CurrentVersion.targets (1820,5): предупреждение MSB3277: обнаружены конфликты между различными версиями одной и той же зависимой сборки, которые не могут быть разрешены,Эти ссылки противоречат списку в журнале сборки, когда подробность журнала установлена ​​на подробный.[C: \ Users \ ... \ MyProject \ MyProject.csproj]

Стоит упомянуть, что у меня есть более старые версии, опубликованные в месте публикации, в которых имя сборки не было изменено,Может ли это вызвать конфликт, который я вижу ...?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Оказывается, проблема в том, что я включил System.net.http.dll в качестве файла в свой проект.Это было установлено на Содержимое в качестве действий сборки.Когда я изменил его на Встроенный ресурс , он начал работать.

0 голосов
/ 25 октября 2018

Изменение имени сборки с помощью MSBuild Target

В соответствии с вашей Test целью и другим сообщением , я создал пример приложения для проверки этой проблемы с помощью следующих сценариеви командная строка MSBuild msbuild.exe /target:Test:

  <PropertyGroup>
    <ProjLocation>$(ProjectDir)</ProjLocation>
    <ProjLocationReleaseDir>$(ProjLocation)\bin\Debug</ProjLocationReleaseDir>
    <ProjPublishLocation>$(ProjLocationReleaseDir)\app.publish</ProjPublishLocation>
    <DeploymentFolder>D:\PublishFolder\Test\</DeploymentFolder>
  </PropertyGroup>

  <Target Name="Test" DependsOnTargets="Clean">
    <MSBuild Projects="$(ProjLocation)\$(ProjectName).csproj" Properties="ProductName=$(ProductName) (Test); AssemblyName=MyProjectTest; PublishUrl=$(PublishUrl)" Targets="Publish" />

    <ItemGroup>
      <SetupFiles Include="$(ProjPublishLocation)\*.*" />
      <UpdateFiles Include="$(ProjPublishLocation)\Application Files\**\*.*" />
    </ItemGroup>
    <Copy SourceFiles="@(SetupFiles)" DestinationFolder="$(DeploymentFolder)\Public Test\" />
    <Copy SourceFiles="@(UpdateFiles)" DestinationFolder="$(DeploymentFolder)\Public Test\Application Files\%(RecursiveDir)" />
  </Target>

Работает нормально, без проблем, имя сборки также было изменено:

enter image description here

Так что эта проблема должна быть больше связана с ошибкой CS1528 в файле SessionModel.cs и warning MSB3277.Чтобы устранить ошибку CS1528, вы можете проверить документ Ошибка компилятора CS1528 для получения более подробной информации.

А для warning MSB3277 вы можете изменить «Детальность вывода сборки проекта MSBuild» на«Подробно» для проверки эталонных конфликтов и разрешения этих конфликтов.Вы можете увидеть эту ветку для некоторых деталей.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...