我正在编写一个使用WebListener而不是 Kestrel 的 ASP.NET 核心应用程序(在完整的.NET 框架上.)我正在使用 Visual Studio 2015 和 Update 3,以及“.NET Core 1.0.1 tools Preview 2”(最新的 VS 工具) 下载网站撰写本文时)。
因为我正在使用 WebListener,并且因为WebListener 与 IIS Express 不兼容,我想在 Visual Studio 中禁用“IIS Express”启动配置文件,这样当我的队友打开此解决方案时,他们的 Visual Studios 将默认运行控制台应用程序而不是 IIS Express ,他们只能点击 Run 而不会出错。
但到目前为止,我还没有能够摆脱 VS 的“IIS Express”发布配置文件。项目属性>调试选项卡允许我编辑配置文件列表,但是当我选择“IIS Express”配置文件时,“删除”按钮被禁用。如果我直接编辑 launchSettings.json,并从“配置文件”下删除“IIS Express”元素,文件>保存操作会以静默方式将“IIS Express”配置文件插回到保存到磁盘的 JSON 中!
显然,Microsoft 确实希望始终拥有“IIS Express”启动配置文件,即使它不一定与所有 ASP.NET Core 项目兼容。但值得一提的是:有没有人找到一种方法来禁用 ASP.NET Core 项目中的“IIS Express”启动配置文件,并且 launch-profile 选择器中只有 self-host option(s?
¹对于好奇的人,我正在使用 WebListener,因为它会在没有安装 IIS 的计算机上让我在 Windows 服务中 self-host 并仍然支持 NTLM 身份验证。 Kestrel 仅在 IIS 中托管时支持 NTLM,而不是在 self-hosted 时托管。
5 回答
更新:
应该使用 Visual Studio 2017 的最新版本(更新)修复此问题。
初答:
正如史密斯回答中的注释中所述,Visual Studio 会在重新启动时继续恢复设置。
由于我找不到更好的解决方案,我只是拒绝了 Visual Studio 的
launchsettings.json
的写权限。我在其他答案中留下了说明类似的问题,这里只是一个复制和粘贴:最后一次更新你的
launchsettings.json
。关闭 Visual Studio。
打开安全设置(在资源管理器的 launchsettings.json 上 right-click - >属性 - >安全性)
单击高级 - >更改权限
从“权限条目”列表中选择“经过身份验证的用户”(或在您的计算机上运行 Visual Studio 的其他用户组),然后单击“编辑” - >
选中“拒绝”以获取“创建文件/写入数据”权限。
在所有打开的对话框和警告中单击“确定”以保存更改。
重新打开 Visual Studio,看它无法更新。
希望能帮助到你。
您只需从项目属性下的 launchSettings.json 文件中删除 IIS Express 选项就足够了吗?
删除红色框中的内容:
现在只显示其他配置文件:
请注意,我正在使用 VS2017 RC。这可能是您遇到的 VS2015 中的错误。您可以尝试使用单独的文本编辑器编辑和保存 launchSettings.json 文件,看看它是否适合您。我可以确认这在 VS2017 RC 中工作正常。
我创建了 VS 2017 扩展来处理 iis express 启动设置https://marketplace.visualstudio.com/vsgallery/e09e0342-f9af-4306-8cf5-35238e34592d
总体思路是在执行 Build/Start/StartWithoutDebugging 命令之前为每个.net 核心项目修复 launchSettings.json
所以我们也一直在努力解决这个问题。我们最终做的是拥有一个“干净”的副本,没有 IIS Express 的东西,然后有一个预构建脚本,在现有版本的基础上复制干净的版本。
cd ..\..\..\Properties copy launchSettings.json.pristine launchSettings.json
这应该在 build/run/etc 上有效地复制它。
以下对我有用:
打开项目属性
在“调试”选项卡中,选择 IIS 配置文件,然后单击“删除”。
在 Launch 组合中,选择Project
打开项目文件(编辑项目文件)
添加以下内容作为
<PropertyGroup>
中的第一个条目<OutputType>Exe</OutputType>