c# - 如何在 ASP.Net MVC 6 中编辑和继续

标签 c# asp.net-core visual-studio-2015 asp.net-core-mvc

在使用旧版本的 Visual Studio 和 ASP.NET 的日子里,您可以在调试代码时编辑代码(即使有一些限制)。

如何启用编辑并继续使用 ASP.Net/VNext (MVC 6) 和 VS 2015 RC。 这个功能可用吗?我收到的消息是:

Error “如果在调试开始时项目未构建,则不允许更改”。

如何在 Debug模式启动时构建项目?

最佳答案

我在我的 ASP.Net MVC 4 项目上得到了编辑并继续在 VS 2015 中工作。 David R 在他的回答中发布了一个链接(为了完整起见,这里再次发布)

http://blogs.msdn.com/b/visualstudioalm/archive/2015/04/29/net-enc-support-for-lambdas-and-other-improvements-in-visual-studio-2015.aspx

该页面表示,如果在运行时加载期间设置了环境变量,VS2015 支持 Attach To Process 上的编辑继续。我的理解是,这个变量在 CLR 中提示分配一些额外的内存,这是编辑和继续工作所需的。

现在的诀窍是让运行应用程序池的 w3wp.exe 进程加载此变量。在任何其他进程中,我只需打开一个命令行并执行

set COMPLUS_FORCEENC=1
ExeToDebug.exe

但我找不到直接使用环境变量运行我的应用程序池的方法。我在此页面上发布了一个解决方法(如 CSUdev),这是一个设置机器级环境变量、重置 iis、调用启动应用程序池的 url,然后清除机器级环境变量的小技巧。 http://forums.iis.net/p/1195182/2115550.aspx?p=True&t=635895941266217500

该线程中的 OP 表示,他过去常常通过为用户配置文件设置环境变量来在 IIS 的早期版本中工作,应用程序池随后会在加载用户配置文件时加载该变量,尽管他无法获得在 IIS8 中工作(可能与操作系统中的 WS2012/Win8 安全设置有关)。

tldr;这是我如何让它工作的

写bat脚本...

#set Edit n Continue variable (global... :/ )
setx /m COMPLUS_FORCEENC 1

#kill/restart existing app pools
iisreset

#force app pool to start up (and use the Edit & Continue var)
#you can download wget or curl (instead of start) 
#if you don't want this to open up your default browser every time
start "http://localhost/urlForAspNetApp" 

#clear Edit n Continue var
setx /m COMPLUS_FORCEENC ""

然后 VS2015 附加到进程 w3wp.exe。 砰。编辑并继续。感谢 MS 和 VS2015 的 friend 们!

关于c# - 如何在 ASP.Net MVC 6 中编辑和继续,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30632427/

相关文章:

asp.net-core - 通过 MapGrpcService 注册的 grpc 服务是否总是短暂的?

c# - 更改密码时如何重复使用身份密码验证

c# - Entity Framework 无法与 MySql 一起使用

.net - 找不到System.Net.Http.Formatting dll

c# - 无法在 Visual Studio 2015 中添加项目引用

c# - 为什么该行没有被插入到数据库中? C#

c# - 改进此工作单元类的方法,与开放/封闭原则和依赖注入(inject)/控制反转相关

angular - StaticInjectorError - 填充下拉列表

c# - 从控制台应用程序重新打开 WPF 窗口

c# - 如何选择加入可访问性改进?