我正在为我的论文进行文献调查,并尝试使用Microsoft的PROSE SDK。但是,每当我尝试从其样本[repo](https://github.com/microsoft/prose)构建项目的依赖项时,都会出现此错误:
Target CompileGrammar:
dotnet dslc "@/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/obj/ProseSample.Substrings.rsp"
dotnet dslc "@/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/obj/ProseSample.Substrings.rsp"
No executable found matching command "dotnet-dslc"
我遵循了here中的安装说明
以下是有关dotnet配置的信息:
macOS:High Sierra版本10.13.6Visual Studio 2019 for Mac版本8.0.9dotnet --info
.NET Core SDK (reflecting any global.json):
Version: 2.2.106
Commit: aa79b139a8
Runtime Environment:
OS Name: Mac OS X
OS Version: 10.13
OS Platform: Darwin
RID: osx.10.13-x64
Base Path: /usr/local/share/dotnet/sdk/2.2.106/
Host (useful for support):
Version: 2.2.4
Commit: f95848e524
.NET Core SDKs installed:
2.2.105 [/usr/local/share/dotnet/sdk]
2.2.106 [/usr/local/share/dotnet/sdk]
.NET Core runtimes installed:
Microsoft.AspNetCore.All 2.2.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.All 2.2.4 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.All]
Microsoft.AspNetCore.App 2.2.3 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 2.2.4 [/usr/local/share/dotnet/shared/Microsoft.AspNetCore.App]
Microsoft.NETCore.App 2.2.3 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
Microsoft.NETCore.App 2.2.4 [/usr/local/share/dotnet/shared/Microsoft.NETCore.App]
这里是.csproj文件:
ProseSample.Substrings.csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net45</TargetFramework>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\ProseSample.Substrings.Semantics\ProseSample.Substrings.Semantics.csproj" />
<PackageReference Include="Microsoft.ProgramSynthesis.Common" Version="6.20.0" />
<PackageReference Include="Microsoft.ProgramSynthesis.DslcTargets" Version="6.20.0" />
<DotNetCliToolReference Include="Microsoft.ProgramSynthesis.Dslc" Version="6.20.0" />
</ItemGroup>
</Project>
生成输出:
Building ProseSample (Debug)
Build started 6/1/2019 5:53:06 PM.
__________________________________________________
Project "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings.Semantics/ProseSample.Substrings.Semantics.csproj" (Build target(s)):
Target GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
Target CoreGenerateAssemblyInfo:
Skipping target "CoreGenerateAssemblyInfo" because all output files are up-to-date with respect to the input files.
Target CoreCompile:
Skipping target "CoreCompile" because all output files are up-to-date with respect to the input files.
Target _CopyFilesMarkedCopyLocal:
Touching "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings.Semantics/obj/Debug/net45/ProseSample.Substrings.Semantics.csproj.CopyComplete".
Target CopyFilesToOutputDirectory:
ProseSample.Substrings.Semantics -> /Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings.Semantics/bin/Debug/net45/ProseSample.Substrings.Semantics.dll
__________________________________________________
Project "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/ProseSample.Substrings.csproj" (Build target(s)):
Target _GetProjectReferenceTargetFrameworkProperties:
__________________________________________________
Project "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/ProseSample.Substrings.csproj" is building "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings.Semantics/ProseSample.Substrings.Semantics.csproj" (GetTargetFrameworks target(s)):
Target ResolveProjectReferences:
__________________________________________________
Project "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/ProseSample.Substrings.csproj" is building "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings.Semantics/ProseSample.Substrings.Semantics.csproj" (GetTargetPath target(s)):
__________________________________________________
Project "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/ProseSample.Substrings.csproj" is building "/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings.Semantics/ProseSample.Substrings.Semantics.csproj" (GetNativeManifest target(s)):
Target GenerateTargetFrameworkMonikerAttribute:
Skipping target "GenerateTargetFrameworkMonikerAttribute" because all output files are up-to-date with respect to the input files.
Target CompileGrammar:
dotnet dslc "@/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/obj/ProseSample.Substrings.rsp"
dotnet dslc "@/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/obj/ProseSample.Substrings.rsp"
No executable found matching command "dotnet-dslc"
/Users/username/.nuget/packages/microsoft.programsynthesis.dslctargets/6.20.0/build/Microsoft.ProgramSynthesis.DslcTargets.targets(82,9): error MSB3073: The command "dotnet dslc "@/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/obj/ProseSample.Substrings.rsp"" exited with code 1.
Done building target "CompileGrammar" in project "ProseSample.Substrings.csproj" -- FAILED.
Done building project "ProseSample.Substrings.csproj" -- FAILED.
Build FAILED.
/Users/username/.nuget/packages/microsoft.programsynthesis.dslctargets/6.20.0/build/Microsoft.ProgramSynthesis.DslcTargets.targets(82,9): error MSB3073: The command "dotnet dslc "@/Users/username/test/prose/ProgramSynthesis/ProseSample.Substrings/obj/ProseSample.Substrings.rsp"" exited with code 1.
0 Warning(s)
1 Error(s)
Time Elapsed 00:00:01.21
========== Build: 1 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========
Build: 1 error, 0 warnings
谢谢您!
[使用最新的PROSE v7.11.1和以下步骤,似乎现在可以在macOS上通过构建。
构建失败由环境中的dotnet dslc
工具failing to run触发。
首先,此工具似乎是NuGet软件包的一部分,需要安装
$ cd ProseSample
$ dotnet add package Microsoft.ProgramSynthesis.Dslc --version 7.11.1
接下来,看来运行该工具负责DSL代码生成的强制步骤的跨平台方式不同-dotnet run dslc
。
$ dotnet run dslc
$ dotnet build
Build succeeded.
0 Warning(s)
0 Error(s)
我想为了使构建能够在IDE中工作,还必须编辑~.nuget/packages/microsoft.programsynthesis.dslctargets/7.11.1/build/Microsoft.ProgramSynthesis.DslcTargets.targets
,并用dotnet dslc
替换所有出现的2个dotnet run dslc
。
希望这会有所帮助!