Опубликовать ядро ​​ASP.NET с MSBuild 15 - PullRequest
0 голосов
/ 06 января 2019

В моей компании есть несколько проектов, использующих .NET Framework (4.5.1), и один проект, использующий .NET Core.

В настоящее время все проекты .NET Framework создаются с использованием MSBuild.exe (версия 12), и я хотел бы обновить сборку для использования MSBuild 15, чтобы иметь возможность создавать проекты .NET Framework и .NET Core в та же сборка.

В настоящее время сборка успешно компилируется, когда я собираю только свой проект .NET Core. Но я хочу опубликовать его, и результат сборки не является моим желаемым результатом, поскольку он не публикует его правильно (сборка приводит к папкам: bin, Properties, Views, wwwroot и файлам конфигурации).

Я не знаю, что я делаю здесь неправильно, я искал в Интернете пару дней и все еще не мог понять, что я сделал не так. Пожалуйста, совет.

Примечание : чтобы собрать в первую очередь, мне пришлось добавить в файл .csproj проекта .NET Core следующие строки, чтобы он не потерпел неудачу при сборке:

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" Condition="true" />

Командная строка для выполнения сборки

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\MSBuild" DailyBuild.proj /t:DailyBuild /p:VersionNumber=15

DailyBuild.proj

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <SourcesPath>$(MSBuildProjectDirectory)\..\..\</SourcesPath>
    <CSCleanProperties>BuildType=Clean;Configuration=Release;IsFormalBuild=true</CSCleanProperties>
    <CSBuildProperties>BuildType=ReBuild;Configuration=Release;PauseBuildOnError=false;PublishWebSites=true;VersionName=Prod-$(VersionNumber)</CSBuildProperties>
  </PropertyGroup>

  <Target Name="DailyBuildWithClean">
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make2.proj" Targets="Clean" Properties="$(CSCleanProperties)"/>
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make2.proj" Properties="$(CSCleanProperties)"/>
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make2.proj" Targets="FormalBuild" Properties="$(CSBuildProperties)"/>
  </Target>

  <Target Name="DailyBuild">
    <MSBuild Projects="$(MSBuildProjectDirectory)\Make2.proj" Targets="SW;PreparePackFolder" Properties="$(CSBuildProperties)"/>
  </Target>

</Project>

Make2.proj

<Project DefaultTargets="SW" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" InitialTargets="CreateProperties;Clean">
  <ItemGroup>
    <SourcesPathItem Include='$(MSBuildProjectDirectory)\..\..\' />
  </ItemGroup>
  <PropertyGroup>
    <MSBuildCommunityTasksPath>$(MSBuildProjectDirectory)\MSBuild.Community.Tasks.v1.4.0.88</MSBuildCommunityTasksPath>
  </PropertyGroup>  
  <Import Project="$(MSBuildCommunityTasksPath)\MSBuild.Community.Tasks.Targets" />
  <PropertyGroup>
    <Configuration>Debug</Configuration>
    <Platform>x86</Platform>
    <CSConfiguration>$(Configuration)</CSConfiguration>
    <BuildType Condition=" '$(BuildType)' == '' ">Build</BuildType>
    <PauseBuildOnError>true</PauseBuildOnError>
    <PublishWebSites>false</PublishWebSites>
    <IsFormalBuild>false</IsFormalBuild>
    <VersionName>Prod</VersionName>
  </PropertyGroup>
  <Target Name="CreateProperties" >
    <CreateProperty Value="%(SourcesPathItem.Fullpath)Src\">
      <Output PropertyName="SourcesPath" TaskParameter="Value"/>
    </CreateProperty>
    <CreateProperty Value="%(SourcesPathItem.Fullpath)Artifacts\">
      <Output PropertyName="MainArtifactsFolder" TaskParameter="Value"/>
    </CreateProperty>
    <CreateProperty Value="%(SourcesPathItem.Fullpath)Packages\">
      <Output PropertyName="PackageFolder" TaskParameter="Value"/>
    </CreateProperty>
    <CreateProperty Value="%(SourcesPathItem.Fullpath)Artifacts\DeployedArtifacts\">
      <Output PropertyName="DeployedPackageFolder" TaskParameter="Value"/>
    </CreateProperty>
    <CreateProperty Value="%(SourcesPathItem.Fullpath)Src\Util\InspectorWebService\InspectorWebService\Publish\">
      <Output PropertyName="InspectorWebServicePublishPath" TaskParameter="Value"/>
    </CreateProperty>

  </Target>
  <PropertyGroup>
    <CSPlatformIndependentProjectProperties>Configuration=$(CSConfiguration);Platform=AnyCPU</CSPlatformIndependentProjectProperties>
    <CSPlatformSpecificProjectProperties>Configuration=$(CSConfiguration);Platform=$(Platform)</CSPlatformSpecificProjectProperties>
    <VCConfiguration>Configuration=$(CSConfiguration);Platform=Win32</VCConfiguration>
  </PropertyGroup>


    <Target Name="InspectorWebService">
    <RemoveDir Directories="$(InspectorWebServicePublishPath)"/>
    <MSBuild Projects="$(SourcesPath)Util\InspectorWebService\InspectorWebService\InspectorWebService.csproj" Targets="$(BuildType)" Properties="$(CSPlatformIndependentProjectProperties)"/>
    <MSBuild Condition=" '$(BuildType)' != 'Clean' And '$(PublishWebSites)' == 'true' " Projects="$(SourcesPath)Util\InspectorWebService\InspectorWebService\InspectorWebService.csproj"
             Targets="ResolveReferences;_WPPCopyWebApplication" Properties="WebProjectOutputDir=$(InspectorWebServicePublishPath);BuildingProject=true" />
  </Target>
  <PropertyGroup>
    <AllProcessesTargets>
      InspectorWebService;
    </AllProcessesTargets>
  </PropertyGroup>
  <Target Name="SW">
    <CallTarget Targets="$(AllProcessesTargets)" RunEachTargetSeparately="false"/>
    <OnError ExecuteTargets="PauseBuild"/>
  </Target>
  <Target Name="FormalBuild">
    <CallTarget Targets="SW;PreparePackFolder;Pack"/>
    <OnError ExecuteTargets="ErrorHandler"/>
  </Target>
  <Target Name="PreparePackFolder">
    <RemoveDir Directories="$(MainArtifactsFolder)" />
    <MakeDir Directories="$(MainArtifactsFolder)" />  

    <MSBuild Projects="$(MSBuildProjectFile)" Targets="PreparePackFolderInternal" Properties="ArtifactFormat=Old;MixedArtifiactFolder=$(MainArtifactsFolder)MixedArtifacts\"/>
    <MSBuild Projects="$(MSBuildProjectFile)" Targets="PreparePackFolderInternal" Properties="ArtifactFormat=New;MixedArtifiactFolder=$(MainArtifactsFolder)DeployedArtifacts\"/>
   </Target>
  <Target Name="PreparePackFolderInternal">
    <CallTarget Targets="PrepareInspectorWebServiceToPack;PrepareOtherFolders"/>
  </Target>
  <Target Name="CopyDefaultFiles">
    <Exec Condition=" '$(ArtifactFormat)' == 'Old'" Command="xcopy &quot;$(CompleteBinFolder)*.*&quot; &quot;$(MixedArtifiactFolder)$(ComponenetName)\Binaries&quot; /I /Y /D /E /F"/>
    <Exec Condition=" '$(ArtifactFormat)' == 'New'" Command="xcopy &quot;$(CompleteBinFolder)*.*&quot; &quot;$(MixedArtifiactFolder)$(ComponenetName)&quot; /I /Y /D /E /F"/>
    <ItemGroup>
      <GeneralConfigFiles Include="$(MixedArtifiactFolder)$(ComponenetName)\Binaries\*.config"/>
      <PDBFiles Include="$(MixedArtifiactFolder)$(ComponenetName)\**\*.pdb"/>
    </ItemGroup>
    <Move Condition=" '$(ArtifactFormat)' == 'Old'" SourceFiles="@(GeneralConfigFiles)" DestinationFolder="$(MixedArtifiactFolder)$(ComponenetName)\Configurations"/>
    <Move Condition=" '$(ArtifactFormat)' == 'New'" SourceFiles="@(PDBFiles)" DestinationFolder="$(MainArtifactsFolder)PDBs\$(ComponenetName)"/>
    <Delete Condition=" '$(ArtifactFormat)' == 'Old'" Files="@(PDBFiles)"/>
  </Target>

  <Target Name="PrepareInspectorWebServiceToPack" Condition=" '$(BuildType)' != 'Clean' ">
    <MSBuild Projects="$(MSBuildProjectFile)" Targets="CopyDefaultFiles" Properties="CompleteBinFolder=$(InspectorWebServicePublishPath);ComponenetName=InspectorWebService"/>
  </Target>


  <Target Name="PrepareOtherFolders">
    <Exec Command="xcopy &quot;$(SourcesPath)..\Certificates\*.*&quot; &quot;$(MixedArtifiactFolder)Certificates&quot; /I /Y /D /E /F"/>
    <Exec Command="xcopy &quot;$(SourcesPath)\Resources\CCI\*.*&quot; &quot;$(DeployedPackageFolder)CCI\Configuration\&quot; /I /Y /D /E /F"/>
  </Target>
  <Target Name="Pack" Condition=" '$(BuildType)' != 'Clean' ">
    <RemoveDir Directories="$(PackageFolder)" />
    <MakeDir Directories="$(PackageFolder)" />


    <ItemGroup>
      <InspectorWebServiceFilesForZip Include="$(DeployedPackageFolder)InspectorWebService\**\*.*" Exclude="$(DeployedPackageFolder)InspectorWebService\**\*.pdb" />
    </ItemGroup> 
    <Zip ZipFileName="$(PackageFolder)$(VersionName)-InspectorWebService.zip" WorkingDirectory="$(DeployedPackageFolder)InspectorWebService" Files="@(InspectorWebServiceFilesForZip)" ZipLevel="9" ParallelCompression="false" />



    <ItemGroup>
      <AllZipFiles Include="$(DeployedPackageFolder)\**\*.*" Exclude="$(DeployedPackageFolder)\**\*.pdb" />
    </ItemGroup> 
    <Zip ZipFileName="$(PackageFolder)$(VersionName)-!All.zip" WorkingDirectory="$(DeployedPackageFolder)" Files="@(AllZipFiles)" ZipLevel="9" ParallelCompression="false" />

    <ItemGroup>
      <AllPDBFiles Include="$(MainArtifactsFolder)PDBs\**\*.pdb"/>
    </ItemGroup> 
    <Zip ZipFileName="$(PackageFolder)$(VersionName)-!PDBForAll.zip" WorkingDirectory="$(MainArtifactsFolder)PDBs" Files="@(AllPDBFiles)" ZipLevel="9" ParallelCompression="false" />

  </Target>
  <Target Name="Clean" Condition=" '$(BuildType)' == 'Clean' ">
    <RemoveDir Directories="$(InspectorWebServicePublishPath)"/>
    <RemoveDir Directories="$(PackageFolder)"/>
    <RemoveDir Directories="$(MixedArtifiactFolder)"/>
  </Target>
  <Target Name="PauseBuild" Condition=" '$(PauseBuildOnError)' == 'true' ">
    <Prompt Text="Press any key to continue ..." />
  </Target>
  <Target Name="ErrorHandler">

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