2017-02-22 107 views
16

我正在写一个使用WebListener而不是Kestrel的ASP.NET Core应用程序(在完整的.NET Framework上).¹我正在使用Visual Studio 2015和Update 3,以及“.NET Core 1.0.1工具预览2“(截至撰写本文时为download site上的最新VS工具)。如何禁用ASP.NET Core的IIS Express启动配置文件?

因为我使用的是WebListener,并且因为WebListener is not compatible with IIS Express,我想在Visual Studio中禁用“IIS Express”启动配置文件,所以当我的队友打开这个解决方案时,他们的Visual Studios将默认运行控制台应用程序而不是IIS Express,他们将能够运行并且不会出错。

但到目前为止,我还没有能够摆脱VS的“IIS Express”启动配置文件。 “项目属性”>“调试”选项卡允许我编辑配置文件列表,但是当选择“IIS Express”配置文件时,“删除”按钮将被禁用。如果我直接编辑launchSettings.json,并从“配置文件”下删除“IIS Express”元素,则文件>保存操作会自动将“IIS Express”配置文件插入保存到磁盘的JSON中!

显然微软确实想要始终拥有“IIS Express”启动配置文件,即使它不一定与所有ASP.NET Core项目兼容。但值得问一下:有没有人找到一种方法来禁用ASP.NET Core项目中的“IIS Express”启动配置文件,并且只有启动配置文件选择器中的自主主机选项?

¹对于好奇心,我使用WebListener,因为它使我能够在Windows服务中自主宿主,并且仍然支持NTLM身份验证,而无需安装IIS。当托管在IIS中时,Kestrel只支持NTLM,而不是在托管时。

回答

1

仅仅从项目属性下的launchSettings.json文件中删除IIS Express选项就足够了吗?

删除的东西,在红色框: enter image description here

现在只有其它规范应该出现: enter image description here

请注意,我使用VS2017 RC。这可能是您遇到的VS2015中的一个错误。您可以尝试使用单独的文本编辑器编辑和保存launchSettings.json文件,并查看它是否适用于您。不过,我可以确认这在VS2017 RC中工作正常。

+0

它是否真的以这种方式保存文件?在VS2015中,当我点击保存时,*实际被写入磁盘*的文件将IIS Express配置文件重新添加回来。不过,除非关闭并重新打开文件,否则不会在IDE中看到此更改,或者打开它在外部编辑器中。 –

+0

刚刚确认。它确实如图所示保存它。关闭并重新打开文件(以VS或其他方式)显示它保存为人们所期望的。 – ssmith

+0

好的,很酷。我想知道他们是否发现了一些VS2015没有IIS Express的情况下无法有效工作的情况,并且增强了VS2017以涵盖该场景(并且在2015年强制IIS Express选项,但不是2017年)。如果你编辑你的答案,放在“它在VS2017中起作用,肯定是VS2015的东西”,那么我会很乐意接受你的答案。 –

1

UPDATE:

的问题应该是固定在Visual Studio 2017年

初步答案的最新版本(更新):

正如在评论中提到ssmith answer,视觉Studio在重新启动时不断恢复设置。

由于找不到更好的解决方案,我刚刚拒绝了Visual Studio的launchsettings.json的写入权限。我在其他的答案类似的问题离开了instructions,这里只是一个复制粘贴&:

  1. 更新您的launchsettings.json最后一次。
  2. 关闭Visual Studio。
  3. 打开安全设置(右键单击launchsettings.json在资源管理器 - >属性 - >安全)
  4. 单击高级 - >更改权限
  5. 选择“验证用户”(或其他用户组下的Visual Studio是在“权限条目”列表中单击,然后单击编辑 - >
  6. 检查拒绝“创建文件/写入数据”权限。
  7. 在所有打开的对话框和警告中单击确定以保存更改。
  8. 重新打开Visual Studio并看到它无法执行更新。

希望它有帮助。

1

我VS 2017年扩展创建对付IIS Express启动设置https://marketplace.visualstudio.com/vsgallery/e09e0342-f9af-4306-8cf5-35238e34592d

的总体思路是建立执行之前解决launchSettings.json每个.NET项目核心/开始/ StartWithoutDebugging命令

+0

如果您从不使用IISExpress,这是一个很好的解决方法。 NTFS技巧可行,但在项目级选择退出令人讨厌。这是一个更多的源代码团队/控制友好(如果它惹恼你,安装这个,如果没有,不要)。这个行为真的应该可以在VS Options中配置(没有任何扩展)。开源,设计精良。算我一个。 – scottt732

1

所以我们一直在努力。我们最终做的是制作launchsettings.json的副本,它是“干净”的,没有IIS Express的东西,然后有一个预先构建的脚本,它将干净版本复制到现有版本的顶部。

  1. 创建一个新文件。 launchSettings.json.pristine与您现有的启动设置文件位于同一文件夹中。
    enter image description here

  2. 添加预生成脚本以复制干净的文件覆盖IIS设置。

    cd ..\..\..\Properties copy launchSettings.json.pristine launchSettings.json

Setting up a pre build event

这实际上应该在将它复制到构建/运行/等。