这可能是一个蹩脚的问题,也许我遗漏了一些非常明显的东西。但是我尝试解决这个问题已经有几天了,但是没有成功。
我有一个相当庞大的使用.NET框架的解决方案(31个项目)。我们过去常常使用CAKE build进行构建和部署过程,但现在我必须将该过程转移到nuke-build。我使用的是MSBuild,不是DotNet。
我设法将任务(从蛋糕)转换为目标(Nuke),并修复了不同目标之间的依赖关系。解决方案构建。
但是我找不到在MSBuild上使用目标“发布”的简单方法,也不知道如何设置发布目录。
例如,蛋糕中的一个任务看起来像这样:
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:
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应该在哪里发布它。
马丁,我将非常感谢你的回复,祝你好运
发布于 2020-12-08 21:39:19
多亏了Matthias,我设法解决了这个问题(参见对问题的评论)。
如果其他人有类似的问题,这是我的解决方案:
Target BuildService => _ => _
.Executes(() =>
{
var csprojFile = RootDirectory + @"\Core\MyProject.Service\MyProject.Service.csproj";
var publishDestination = $@"{TempPublishDestination}\service";
MSBuildTasks.MSBuild(s => s
.SetTargetPath(csprojFile)
.SetConfiguration(Configuration)
.SetMaxCpuCount(Environment.ProcessorCount)
.SetNodeReuse(IsLocalBuild)
.SetProperty("DeployOnBuild", "true")
.SetProperty("PublishProfile", Configuration.ToString())
.SetProperty("Platform", "AnyCPU")
.SetProperty("PublishUrl", publishDestination)
.SetTargets("Build", "Publish")
);
});谢谢
发布于 2021-06-01 05:32:48
如果要避免使用发布配置文件,请执行以下操作:
MSBuild(s => s
.SetTargetPath(<cs proj directory>)
.SetConfiguration(Configuration)
.SetMaxCpuCount(Environment.ProcessorCount)
.SetNodeReuse(IsLocalBuild)
.SetProperty("DeployOnBuild", "true")
.SetProperty("Platform", "AnyCPU")
.SetProperty("PublishUrl", <a folder>)
.SetProperty("DeployDefaultTarget", "WebPublish")
.SetProperty("WebPublishMethod", "FileSystem")
.SetTargets("Build", "Publish")
);https://stackoverflow.com/questions/65185855
复制相似问题