我的配置是这样的:我有一个解决方案,里面有不同的dotnet4.6应用程序(服务)。现在我们在此解决方案中添加了一个dotnet core项目。我可以构建和调试它,但这并不会创建可执行文件。在Visual Studio中,我可以右键单击->发布...。我创建了两个配置文件(x86和x64),应该在/bin/Publish/x86或/x64中创建良好的二进制文件。在VS中,这很有效。该应用程序是自包含的,并且可以在不同的未准备好的机器上运行。
但现在我需要将该过程移动到构建服务器。我尝试使用dotnet publish
,但最终因为解决方案的其他组件不是清洁的dotnet core而卡住了,所以我需要坚持使用MSBuild。
当前的尝试是:"C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\MSBuild.exe" NewProject\NewProject.csproj /p:DeployOnBuild=true /p:UsePublishProfile=true /p:PublishProfile=x64Profile
。
这表明它已成功构建,但我没有看到任何结果。如果删除所有属性并只调用msbuild和*.csproj,也不会有任何区别。它只会在bin/Debug中作为dll构建新项目,而不是exe。
我也尝试过p:PublishProfile="NewProject\Properties\PublishProfiles\x64Profile.pubxml"
和/p:PublishUrl="NewProject\bin\Publish\x64"
,但没有改变任何东西。
我在Stack Overflow上阅读了几篇文章,说VS不仅使用参数调用msbuild,还使用内部API调用。然而,我需要一个解决方案。我需要构建服务器创建可执行文件。有没有一种方法可以触发msbuild来创建它?
<Project Sdk="Microsoft.NET.Sdk.Web">
而不是使用库SDK,是否可以简化您的csproj? - TheXenocideMicrosoft.WebApplication.targets
,因为这是 ASP.NET 4.x 项目的典型步骤。这可能会导致误导,因为 ASP.NET 和 ASP.NET Core 项目应该有所区别,并且不需要那么多的技巧。 - Lex Li