我正在MacOS上开发一个dotnet5解决方案,Reinforced.Typings给了我以下编译错误。它试图运行dotnet.exe,我怀疑这是问题的核心,因为它在MacOS上不存在。有关于如何修复它的线索吗?
/Users/myuser/.nuget/packages/reinforced.typings/1.6.1/build/Reinforced.Typings.targets(3,3): Error MSB6003: The specified task executable "" could not be run. System.ComponentModel.Win32Exception (0x80004005): ApplicationName='dotnet.exe', CommandLine=' "/Users/myuser/.nuget/packages/reinforced.typings/1.6.1/tools/net5.0/rtcli.dll" profile "/var/folders/q3/zth_hlj12ts4w6zc9m42_ctr0000gn/T/tmp316575ae.tmp"', CurrentDirectory='', Native error= Cannot find the specified file
at System.Diagnostics.Process.StartWithCreateProcess (System.Diagnostics.ProcessStartInfo startInfo) [0x0029f] in /Users/builder/jenkins/workspace/build-package-osx-mono/2020-02/external/bockbuild/builds/mono-x64/mcs/class/System/System.Diagnostics/Process.cs:778
at System.Diagnostics.Process.Start () [0x0003a] in /Users/builder/jenkins/workspace/build-package-osx-mono/2020-02/external/bockbuild/builds/mono-x64/mcs/class/referencesource/System/services/monitoring/system/diagnosticts/Process.cs:2006
at (wrapper remoting-invoke-with-check) System.Diagnostics.Process.Start()
at Microsoft.Build.Utilities.ToolTask.ExecuteTool (System.String pathToTool, System.String responseFileCommands, System.String commandLineCommands) [0x000c9] in /Users/builder/jenkins/workspace/build-package-osx-mono-pullrequest/pr/external/bockbuild/builds/msbuild-15/src/Utilities/ToolTask.cs:711
at Microsoft.Build.Utilities.ToolTask.Execute () [0x00433] in /Users/builder/jenkins/workspace/build-package-osx-mono-pullrequest/pr/external/bockbuild/builds/msbuild-15/src/Utilities/ToolTask.cs:1519 (MSB6003) (MyProject.Core)我的配置类如下所示:
namespace MyProject.Core
{
public static class ReinforcedTypingsConfiguration
{
public static void Configure(ConfigurationBuilder builder)
{
builder.Global(x => x.ExportPureTypings()
.CamelCaseForProperties()
.AutoOptionalProperties(true));
builder.ExportAsInterfaces(TypesToExport);
}
private static List<Type> TypesToExport = new()
{
typeof(ProductDto)
};
}
}我的Reinforced.Typings.settings.xml看起来像这样:
<?xml version="1.0" encoding="UTF-8" ?>
<Project>
<PropertyGroup>
<RtForceTargetFramework>net5.0</RtForceTargetFramework>
<RtTargetFile>$(ProjectDir)/contracts.d.ts</RtTargetFile>
<RtConfigurationMethod>MyProject.Core.ReinforcedTypingsConfiguration.Configure</RtConfigurationMethod>
<RtDivideTypesAmongFiles>false</RtDivideTypesAmongFiles>
<RtBypassTypeScriptCompilation>false</RtBypassTypeScriptCompilation>
<RtDisable>false</RtDisable>
</PropertyGroup>
</Project>发布于 2021-09-13 13:33:11
检查Reinforced.Typings的源代码,它会在内部调用RuntimeInformation.IsOSPlatform(OSPlatform.Windows)来确定是使用"dotnet.exe"还是"dotnet"。
尝试创建一个简单的控制台应用程序,并检查RuntimeInformation.IsOSPlatform(OSPlatform.Windows)返回的内容。
源代码:RtCli.cs
发布于 2021-09-17 19:12:27
通过运行dotnet build *.sln,Reinforced.Typings可以在命令行中按预期工作。它也适用于Rider,它包装了相同的构建命令。
从Visual Studio for Mac构建则是另一回事。它似乎在build上运行了大量的东西,但没有运行dotnet build。不完全确定Visual Studio for Mac正在运行什么命令,但它看起来像是某种与目标/任务相关的流,以某种方式将OsPlatform设置为OsPlatform.Windows,尽管它显然是不正确的。
https://stackoverflow.com/questions/69107712
复制相似问题