我遇到了这个令人沮丧的问题。我在剃刀视图(cshtml)中更改文本,Start without Debugging
,刷新(Ctrl + F5)浏览器但没有任何反应。奇怪的是,如果我修改控制器的返回值(比如说return Ok("test");
)或者包含的静态文件(比如CSS),刷新,则可以看到更改。剃刀视图仅在我每次停止启动和停止调试时才会更新。
以下是我已经尝试过的事情:
Detect when file is changed outside the environment
。On run, when projects are out of date
是Always build
。P.S。我看到有很多类似的问题,然而,没有一个答案可以解决我的问题。
更新
这似乎是一个更大规模的问题。如果我:
@RenderSection("css", required: true)
。InvalidOperationException: The following sections have been defined but have not been rendered by the page at 'bla\bla\bla':css
。此时,VS 2015实际上无法使用,因为你不知道,如果你真的错过了某些东西,或者它的VS代理
答案 0 :(得分:12)
之前我遇到过这个问题。 我的情况是我在Macbook Pro上运行Windows 10 VM Parallel,项目文件在mac OS的共享文件夹中。
如果某人有像我一样的案例,将项目移动到非共享目录(例如C:\)将解决问题。
答案 1 :(得分:5)
检查您的web.config
并确保您没有fcnMode="Disabled"
或fcnMode="NotSet"
使用
<httpRuntime targetFramework="4.5.2" fcnMode="Default" />
或
<httpRuntime targetFramework="4.5.2" fcnMode="Single" />
- 默认对于每个子目录,应用程序都会创建一个监视子目录的对象。这是默认行为。
- 已禁用已停用文件更改通知。
- NotSet 未设置文件更改通知,因此应用程序会创建一个监视每个子目录的对象。这是默认值 行为。
- 单个应用程序创建一个对象来监视主目录,并使用此对象监视每个子目录。
答案 2 :(得分:4)
这里似乎发生了什么:.net框架将你的剃刀编译成机器形式(DLL)并执行它。然后它监视您的Web文件夹以监视更改,当它检测到更改时,它会重新编译您的剃刀并执行新的DLL。
在您的情况下,与监视文件更改相关的某些内容似乎失败了。它仍然可以在完全重启时运行,因为即使没有文件更改检测,也会进行编译。常见原因是:
为了确认这是问题,我建议只编辑web.config(添加/删除一个字符)然后看看重新加载是否成功 - 只是为了证明它是一个重新编译问题而不是一个visual-studio - 调试问题。假设是这种情况,并假设它不是NAS,我建议暂时给该文件夹一个“everyone - everything”权限,看它是否有效,然后再逐渐将权限再次降低到你想要的位置。
答案 3 :(得分:1)
如果您使用Parallels WM在Mac上运行并且您的项目位于Mac-volume上,则可以使用chmod解决此问题。
chmod -R 777 *
答案 4 :(得分:0)
刚刚遇到同样的问题。经过长时间调试并尝试几乎所有内容后,我们发现有人在Visual Studio中将文件从一个文件夹移动到另一个文件夹并检查到TFS。所以项目文件已更新,但原始文件仍存在于磁盘上。所以我的本地IIS渲染了旧文件而不是新位置的新文件。
这很令人沮丧,是的。
答案 5 :(得分:0)
有两种方法可以解决此问题:
1 。检查存在.sln文件的文件夹的权限。文件访问权限可能有问题,因为在IIS Express服务器运行时Visual Studio可能无法访问文件,因此每次需要时都要反映新的.cshtml更改。重新启动服务器,所以我建议通过以下方式编辑文件夹访问权限:
右键单击文件夹->属性->安全->单击编辑按钮->选中所有选项->保存。
重新启动Visual Studio以查看更改。
如果这不起作用,请使用2选项。
2 。在您的项目的 startup.cs 文件中,将其添加到方法中的 ConfigureServices()行下面:
services.AddMvc()。AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);
答案 6 :(得分:0)
在并行虚拟机上,在Macbook Pro上,如果项目文件位于共享文件夹中,则重新编译机制将不起作用; 将文件夹复制到驱动器C即可解决问题