安装ASP.NET MVC 3安全更新后KB2990942,MVC版本似乎从3.0.0.0增加到3.0.0.1.这会导致Visual Studio不再找到引用.
<Reference Include="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL" />
Run Code Online (Sandbox Code Playgroud)
Resharper没有显示任何问题,但构建失败,有许多未解析的MVC类型和警告:
警告:无法解析此引用.无法找到程序集"System.Web.Mvc,Version = 3.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35,processorArchitecture = MSIL".检查以确保磁盘上存在程序集.如果您的代码需要此引用,则可能会出现编译错误.
这种做法很有道理.我的机器上不再存在此版本.
我无法保证dev机器,构建服务器和生产服务器上的确切MVC版本.他们可能有3.0.0.0或3.0.0.1可能随时改变.Windows Update可能随时发布新的MVC版本.此外,每当发布MVC更新时,我都不希望增加所有*.csproj文件中的版本号.
更新会影响多个版本:
安全公告:MS14-059:ASP.NET MVC中的漏洞可能允许安全功能绕过(2990942)
处理这种情况的最佳方法是什么?如何在未来的MVC更新中展开构建和生产并保持安全?
.net versioning asp.net-mvc assembly-references assembly-binding-redirect
这个问题间歇性地出现了.如果项目已清理或正在通过新结账构建,则始终会发生错误.立即再次推送构建通常会导致构建成功.我得到的堆栈跟踪是:
error MSB4018: The "CreateRiaClientFilesTask" task failed unexpectedly.
System.AppDomainUnloadedException: Attempted to access an unloaded AppDomain.
at System.IDisposable.Dispose()
at Microsoft.ServiceModel.DomainServices.Tools.CreateRiaClientFilesTask.GenerateClientProxies()
at Microsoft.ServiceModel.DomainServices.Tools.CreateRiaClientFilesTask.ExecuteInternal()
at Microsoft.ServiceModel.DomainServices.Tools.RiaClientFilesTask.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__1c.MoveNext()
Run Code Online (Sandbox Code Playgroud)
在常规编辑 - 构建 - 执行周期期间,问题也会间歇性地发生,有时需要从Visual Studio重新启动才能使其在这些情况下工作.
在MSBuild和Visual Studio 2010中都会出现此问题.我已安装所有最新更新(WCF RIA Services SP2).它发生在使用Silverlight 4工具时,升级到Silverlight 5并没有解决问题.VS 11的测试版中仍然存在这个问题.
我无法改变这里描述的构建顺序(从这里引用),因为MSBuild抱怨循环依赖,Visual Studio说我不能从Silverlight引用非Silverlight项目.从该页面我也尝试了这个链接,并在注册表中将默认的ToolsVersion从2.0更改为4.0.
我肯定使用的是32位版本的MSBuild,因为试图使用64位版本失败,因为它没有实现水合实体框架模型.我没有使用/ m开关来并行构建它.
该项目最初是一个Web项目(托管Silverlight控件所在的站点,RIA服务,包含业务逻辑)和Silverlight项目.将此更改为3个项目(包含逻辑的类库)没有任何区别.
我正计划尝试的下一件事是将托管RIA服务的项目与托管Silverlight应用程序的项目分开,但这对我们来说并不理想(我甚至不确定它是否可行).