在我公司中,我们有一些使用.NET Framework(4.5.1)的项目,还有一个使用.NET Core的项目。
当前,所有.NET Framework项目都是使用MSBuild.exe(版本12)构建的,我希望将其更新为使用MSBuild 15,这样我就可以在.NET Framework和.NET Core项目中进行构建。相同的版本。
当前,当我仅构建我的.NET Core项目时,该构建可以成功编译。但是我希望将其发布,并且构建结果不是我想要的结果,因为它没有正确发布(构建结果位于以下文件夹中:bin,Properties,Views,wwwroot和配置文件)。
我不知道我在这里做错了什么,我已经在网上搜索了几天,但仍然无法弄清楚我做错了什么。请指教。
注意:首先要进行构建,我必须在.NET Core的项目.csproj文件中添加以下几行,以便在构建时不会失败:
<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 "$(CompleteBinFolder)*.*" "$(MixedArtifiactFolder)$(ComponenetName)\Binaries" /I /Y /D /E /F"/>
<Exec Condition=" '$(ArtifactFormat)' == 'New'" Command="xcopy "$(CompleteBinFolder)*.*" "$(MixedArtifiactFolder)$(ComponenetName)" /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 "$(SourcesPath)..\Certificates\*.*" "$(MixedArtifiactFolder)Certificates" /I /Y /D /E /F"/>
<Exec Command="xcopy "$(SourcesPath)\Resources\CCI\*.*" "$(DeployedPackageFolder)CCI\Configuration\" /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>