F# .NET框架控制台应用程序模板丢失。

15
我在使用 .Net Framework (而非 .Net Core) 创建 F# 控制台应用程序时遇到了问题。当我打开:
Visual Studio 2017 -> 新建项目 -> Visual F# -> .Net Standard
时,唯一可见的模板是“类库(Class Library)”。
我使用 Visual Studio Installer 添加了以下软件包:
- F#语言支持(我知道这是 .Net Core 的依赖项,但它仍然可能很重要) - F#桌面语言支持(安装程序说它只有147KB大小,可以吗?)
然而,这并没有改变任何东西 - 仍然没有控制台应用程序的模板。我还试图查看 .NET Framework 的目标版本是否会改变任何内容,但它不会 - 我还有其他遗漏的地方吗?
注意:尽管我想使用 .Net Core 版本,但由于我将要使用的框架仅支持 .Net Standard 框架 - 它需要 System.Windows.Forms,因此我无法使用 .Net Core 版本。

嘿,现在已经修复了,请尝试使用https://dev59.com/wVEG5IYBdhLWcg3wW7I5#67510364在您的模板中启用它。 - Transformer
4个回答

21

显然我是个盲人。不过,为了辩解一下,我需要澄清一下:


要创建一个使用 .Net Framework (而不是 Core) 的控制台应用程序,我需要点击:

Visual Studio 2017 -> 新建项目 -> Visual F#(模板在这里)

而不是:

Visual Studio 2017 -> 新建项目 -> Visual F# -> .Net Standard(模板在层次结构的上一级)


说明:

正如 @PanagiotisKanavos 在评论中所述:

.NET Standard 仅用于 可移植库

因此它根本不应该出现在那里。


注意:
F# 桌面语言支持 是必需的包,其中包含 F# 控制台应用程序(以及其他非核心模板)。

如果您没有安装此软件包,则无论您在哪里单击,都看不到该模板。您可以通过Visual Studio 安装程序中的单独组件选项卡安装它。


2
.NET Standard 仅用于可移植库 - Panagiotis Kanavos
我通过一次艰难的经历学到了一个教训。不过还是谢谢你的澄清。 - Asunez
人们已经讨论了.NET Core和.NET Standard几年了,有很多文章解释标准、框架和核心之间的关系。 - Panagiotis Kanavos
无论我在哪里点击,都看不到控制台应用程序模板:http://telegra.ph/No-F-Console-for-NET-framework-02-07 - Nikolai Koudelia
6
当您打开Visual Studio Installer并切换到“单个组件”时,您是否选中了“F#语言支持”和“F#桌面支持”?如果没有,请安装它们。另外,请尝试切换.NET版本(窗口的上部分)是否有所帮助。 - Asunez
显示剩余4条评论

1
这不是答案,而是一种解决方法。您可以创建两个项目:F#库和C#控制台应用程序。将F#项目引用到您的C#控制台应用程序中。从那里,您可以从控制台应用程序内部调用您的F#方法。

那很好知道,当我放弃搜索答案时,我会尝试这种方法。为了补充解决方法,我认为也可以将System.Windows.Forms DLL添加到 .Net Core 项目中,但我想这样的稳定性可能相对较差。不过,谢谢你提供一个可行的解决方案 :) - Asunez
3
不必创建C#控制台应用程序,F#控制台应用程序可以很好地工作。无论使用哪种语言,.NET Standard仅用于可移植库。 - Panagiotis Kanavos

0

对于F#来说,过程是一样的,只需在“添加单独组件”选项卡下选择F#进行筛选。

背景 -- 这是一个有意更改/损坏的问题,你可以在这里阅读更多信息以及在此报告的问题,但你可以通过以下两个选项来修复它:即A)启用它或B)通过修复工具将其添加到VS中


  • 选项1:您可能需要启用此选项...

工具 > 选项 > 预览功能 > “在新项目对话框中显示所有 .NET Core 模板(需要重新启动)”。

Enable the option


  • 选项 2:像这样通过Visual Studio Installer 安装

您可以使用修复VS(这也会更新安装程序)安装缺失的工作负载,并确保您从VS Installer 工具中勾选所需的可选包,请参见this

repair the VS install


对于 F#,过程是相同的,只需在添加单个组件选项卡下过滤 F#,它是下面图片中的第二个选项卡
安装程序启动后,请检查桌面和控制台是否选择了 .NET Core 工作负载,如下所示。在右侧窗格中,您需要勾选正确的框。

Select the core tools & Filter for F# tools by visual studio components

如果您已经按照上述步骤进行操作,那么请验证在Visual Studio安装程序的右上角是否选择了“ .net-桌面开发”复选框:删除缓存并还原

即您可以在VS2017/2019中还原模板,然后再次尝试。

请参考以下步骤:

  1. 删除ItemTemplatesCache、ProjectTemplatesCache文件夹等。 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\Common7\IDE.
  2. 在命令提示符中,导航到devenv.exe的位置。该文件位于\Common7\IDE。
  3. 键入/运行此命令devenv /installvstemplates,然后按Enter键。

.Net Desktop Dev Workload

提醒 - 您的模板缓存在此处,包含以模板文件夹中存档的zip文件命名的文件夹。 您需要管理员权限进行编辑/删除。

%AppData%\Microsoft\VisualStudio\{某个版本}\ItemTemplatesCache\


选项3:调试您的环境。模板配置文件夹

检查/诊断版本:

运行此命令dotnet --version,安装正确的核心版本https://dotnet.microsoft.com/download/dotnet/5.0,更多信息请参见这里 此命令dotnet new -u将告诉您已安装的模板,您可以使用修复工具卸载、清除软件包缓存、重新启动并重新安装。

下载并运行collect.exe - https://aka.ms/vscollect - 并在%TEMP%\vslogs.zip中分享创建的日志文件给微软github

FYI - 这是您在Visual Studio中的模板文件夹结构应该看起来像什么。

└───mytemplate
    │   console.cs
    │   readme.txt
    │
    └───.template.config
            template.json

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接