这可能是一个愚蠢的问题,也许我错过了一些非常明显的东西。但是我已经尝试解决这个问题几天了,但没有成功。
我有一个相当庞大的解决方案(31个项目),使用.NET框架。我们以前使用CAKE build进行构建和部署过程,但现在我必须将该过程移动到nuke-build中。 我正在使用MSBuild,而不是DotNet。
我成功地将任务(从CAKE)转换为目标(Nuke),并修复了不同目标之间的依赖关系。解决方案已经构建成功。
但是我找不到在MSBuild上使用目标“Publish”的简单方法,也不知道如何设置发布目录。
例如,CAKE中的一个任务如下所示:
Task("BuildService")
.Does(() => {
var csprojFile = rootSolutionDirectory + "/Core/MyProject.Service/MyProject.Service.csproj";
var publishDestination = $"{tempPublishDestination}/service";
MSBuild(csprojFile, new MSBuildSettings()
.WithProperty("target", "build;publish")
.WithProperty("DeployOnBuild", "true")
.WithProperty("PublishProfile", publishProfile)
.WithProperty("Configuration", configuration)
.WithProperty("Platform", platform)
.WithProperty("PublishUrl", publishDestination)
);
});
我在NUKE中将其转换为目标:
Target BuildService => _ => _
.Executes(() =>
{
var csprojFile = rootSolutionDirectory + "/Core/MyProject.Service/MyProject.Service.csproj";
var publishDestination = $"{tempPublishDestination}/service";
MSBuild(s => s
.SetTargetPath(csprojFile)
.SetTargets("Rebuild", "Publish") // looks like "Publish" does nothing
.SetConfiguration(Configuration)
.SetAssemblyVersion(GitVersion.AssemblySemVer)
.SetFileVersion(GitVersion.AssemblySemFileVer)
.SetInformationalVersion(GitVersion.InformationalVersion)
.SetMaxCpuCount(Environment.ProcessorCount)
.SetNodeReuse(IsLocalBuild))
// don't know where to put publishDestination
;
});
我卡在这里了。我不知道如何告诉MSBuild通过Nuke.Common.Tools.MSBuild.MSBuildSettings或其他对象也要进行“发布”。
还有,如何告诉MSBuild应该在哪里发布。
非常感谢您的回答,最好的问候,马丁
SetProperty(key, value)
是等价的。 - Matthias