我有一个.NET Core控制台应用程序,并希望使其成为一个针对Windows和Mac OS X的自包含应用程序。
根据我正在遵循的教程,这样做的方法是编辑项目文件。
为了使它成为一个独立的Windows应用程序,我添加了这一行。
<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
这按预期工作,我可以发布应用程序,一切正常。现在,根据教程,要定位Mac OS X和Windows,您需要像这样更改该行。
<RuntimeIdentifiers>win10-x64;osx.10.12-x64</RuntimeIdentifiers>
但是,当我把它放入并尝试将更改保存到项目文件时,我遇到以下错误。
与Debug文件夹相关:
“HasTrailingSlash”函数只接受标量值,但其参数“$(OutputPath)”的计算结果为“bin \ Debug \ netcoreapp2.0 \ win10-x64; osx.10.12-x64 \”,这不是标量值。 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets
与Release文件夹相关:
“HasTrailingSlash”函数只接受标量值,但其参数“$(OutputPath)”的计算结果为“bin \ Release \ netcoreapp2.0 \ win10-x64; osx.10.12-x64 \”,这不是标量值。 C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets
一旦我离开所有警告,项目文件仍然保存。它们出现了好几次。具体来说,有4个关于调试路径的警告和2个关于释放路径的警告(保存尝试次数?)。
当我关闭解决方案然后再次打开它时,此特定项目拒绝加载。它只是作为未加载的项目位于解决方案资源管理器中。
如果我尝试重新加载它,我会得到一个漂亮的小红色,严重错误图标以及相同的消息。
为什么会发生这种情况,似乎是什么问题?请注意,在Windows机器上以Windows和Mac OS X为目标进行自包含部署的适当方法是什么?
编辑项目文件仍然是一种有效的方法吗?我关注的教程于2017年8月由“对云有热情的软件架构师和开发人员”发布。他对他编辑项目文件的方法做了评论,称当前的工具“不稳定”。
<RuntimeIdentifiers>win10-x64;osx.10.12-x64</RuntimeIdentifiers>
这不是我输入的内容。
相反,这就是我在代码中所拥有的。请注意单数形式。
<RuntimeIdentifier>win10-x64;osx.10.12-x64</RuntimeIdentifier>
问题在于我没有注意,也没有手动输入。我使用了代码自动完成(IntelliSense),只是通过这些标签进行选项卡。
对于仅一个运行时标识符(RID),您可以使用XML运行时标识符标记的单数或复数形式。
<RuntimeIdentifier>win10-x64</RuntimeIdentifier>
要么
<RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
对于多个RID,您必须使用复数形式的XML运行时标识符标记。
<RuntimeIdentifiers>win10-x64;osx.10.12-x64</RuntimeIdentifiers>