我有一个 MVC2 网站,它使用来自其他程序集的 View 。 为此,我将 View 标记为“嵌入式资源”。
我能够看到 View ,但现在,当我更改 View 时,我再也看不到更改了。
我将 View 称为嵌入式资源的方式与此类似:
return View("~/Extension/Extensions.MyExtension.dll/" +
"Extensions.MyExtension.Views.MyItem.Details.ascx", entity);
在这种情况下,“扩展”部分表示 View 必须作为嵌入式资源加载。以下部分表示包含 View 的程序集。最后一部分是 View 的位置(包括命名空间)。
为什么在我更改了 View 的全部内容后仍然显示来自早期 View 的数据。甚至取消将 View 标记为嵌入式资源。
为了确保我拥有最新的 Extensions.myExtension.dll 程序集,我将该程序集复制到网站的 bin 文件夹中。我用反射器检查了组件,看组件中是否有正确的 View 。这是正确的观点,但我仍然看到旧观点。
更改 View 的名称可以暂时解决问题,但对我来说不是很好的解决方案。当我将 View 的名称更改回原来的名称时,会显示旧 View 。
最佳答案
在我看来,如果数据被缓存并且 DLL 文件未被视为已更改,则几乎是这样。您的 web.config 中是否有属性“optimizeCompilations”?检查它是否设置为 false。否则(如果为真)仅重新编译更改的 DLL 文件。
更多信息可以在 this 上找到MSDN 页面。
例如:
<compilation debug="true" defaultLanguage="c#" targetFramework="4.0"
optimizeCompilations="false">
关于作为嵌入式资源的 C# View 在构建后始终显示旧 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4659059/