gpt4 book ai didi

msbuild - 如何检查 MSBuild 是否正在使用 .NET Core?

转载 作者:行者123 更新时间:2023-12-02 15:41:58 25 4
gpt4 key购买 nike

我正在使用Scripty.MsBuild在 ASP.NET Core 项目中生成一些文件。当我从 VS2017 构建时,目标运行成功,但是当我通过 dotnet 构建时,出现错误:

Scripty.MsBuild.targets(31,5): error MSB4062: The "ScriptyTask" task could not be loaded from the assembly C:\Users\geirsagberg\.nuget\packages\scripty.msbuild\0.7.4\build\\..\tools\Scripty.MsBuild.dll. Could not load file or assembly 'Microsoft.Build.Utilities.v4.0, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask.

我当前的解决方法是为 Release 配置禁用 Scripty.MsBuild:

<PackageReference Include="Scripty.MsBuild" Version="0.7.4" Condition="'$(Configuration)'=='Debug'" />

这让我可以在 Debug模式下从 VS 进行构建,并在构建服务器上使用 dotnet 进行构建。

但是,我仍然希望能够在 Debug模式下本地执行 dotnet run (用于从 VSCode 运行)。因此,我需要根据 Visual Studio 的 MSBuild 是否正在运行或 dotnet 版本有条件地包含 PackageReference。据我所知,这两个版本号完全相同;我错过了什么吗?

MSBuild 中是否有一个属性可以用来区分 VS MSBuild 和 dotnet

最佳答案

结果是有一个属性MSBuildRuntimeType,它可以是CoreMonoFull。所以我可以这样做:

<PackageReference Include="Scripty.MsBuild" Version="0.7.4" Condition="'$(MSBuildRuntimeType)'!='Core'" />

Reference from SDK

关于msbuild - 如何检查 MSBuild 是否正在使用 .NET Core?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44965597/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com