错误 MSB4018:“CreateRiaClientFilesTask”任务意外失败 - 尝试访问已卸载的 AppDomain
Posted
技术标签:
【中文标题】错误 MSB4018:“CreateRiaClientFilesTask”任务意外失败 - 尝试访问已卸载的 AppDomain【英文标题】:Error MSB4018: The "CreateRiaClientFilesTask" task failed unexpectedly - Attempted to access an unloaded AppDomain 【发布时间】:2012-03-28 19:48:43 【问题描述】:这个问题与here 和here 发布的问题不同,尽管标题相同。
问题间歇性出现。如果项目已被清理或正在从新结帐构建,则始终会发生错误。立即再次推送构建通常会导致构建成功。我得到的堆栈跟踪是:
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()
在常规的编辑-构建-执行周期中也会间歇性地出现此问题,有时需要从 Visual Studio 重新启动才能使其在这些情况下正常工作。
在 MSBuild 和 Visual Studio 2010 中都会出现此问题。我已安装所有最新更新 (WCF RIA Services SP2)。使用 Silverlight 4 工具时出现,升级到 Silverlight 5 并没有解决问题。在 VS 11 的 beta 版本中也仍然存在该问题。
我无法按照here(引用自here)的描述更改构建顺序,因为 MSBuild 抱怨循环依赖并且 Visual Studio 说我不能引用非 Silverlight 项目来自 Silverlight 的。在该页面上,我还尝试关注this link,并将注册表中的默认 ToolsVersion 从 2.0 更改为 4.0。
我肯定在使用 32 位版本的 MSBuild,因为尝试使用 64 位版本会失败,因为无法 Hydrate 实体框架模型。我也没有使用 /m 开关来并行构建它。
该项目最初是一个 Web 项目(托管 Silverlight 控件所在的站点、RIA 服务并包含业务逻辑)和一个 Silverlight 项目。将其更改为 3 个项目(使用包含逻辑的类库)没有任何区别。
我计划尝试的下一件事是将托管 RIA 服务的项目与托管 Silverlight 应用程序的项目分开,但这对我们来说并不理想(我什至不确定它是否会起作用)。
【问题讨论】:
备案:一个密切相关的问题是***.com/q/4450340/223837。 【参考方案1】:就我而言,此异常是由 McAffee 的防病毒应用程序引起的。禁用“On-Access”(或者是“On-Demand”)功能解决了这个问题。
过去,我在使用 Microsoft 的 Security Essentials 时遇到过类似问题,通过添加以下排除项解决了该问题。我怀疑这是解决此处问题所需的“临时 ASP.Net 文件”文件夹排除项。
排除的文件和位置
C:\Temp\Default\NuGet.exe C:\Temp\NativeImage\NuGet.exe C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files NuGet.exe排除的进程
C:\Program Files (x86)\Common Files\microsoft shared\DevServer\11.0\WebDev.WebServer40.EXE C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\devenv.exe C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\IDE\Microsoft.VisualStudio.Web.Host.exe C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe【讨论】:
这也为我修复了它,尽管我没有排除某些东西,而是删除了 McAfee 并安装了其他东西。 这也为我们修复了它。但由于公司政策,我们无法永久禁用 McAfee 或更改排除项,我们找到了一种将“临时 ASP.Net 文件”移动到其他位置的方法。我正在为此添加一个单独的答案。【参考方案2】:这个异常快把我逼疯了!我还尝试清理 ASP.Net 临时文件夹,清理解决方案中的所有项目,以管理员身份运行 VS 等。但我仍然有这个问题。我对该问题的解决方案是两次重建 Web 项目。
【讨论】:
【参考方案3】:在我们的案例中,我们遇到了与同一问题 (https://***.com/a/14125687/223837) 的另一个答案中报告的相同的问题:McAfee 奇怪地干扰了“临时 ASP.NET 文件”中的文件。但在我们的案例中,由于公司政策,我们无法禁用 McAfee 或更改排除的文件夹。
但我们找到了不同的解决方案:我们所做的是更新machine.config
文件(在我们的例子中为C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Config\machine.config
),并添加一个<compilation tempDirectory="..."/>
元素,如下所示:
<configuration>
<!-- snip -->
<system.web>
<!-- snip -->
<compilation tempDirectory="c:\A_FOLDER_THAT_IS_SKIPPED_BY_MCAFEE\TempASP.NETFiles\"/>
</system.web>
<!-- snip -->
</configuration>
(此解决方案方向的灵感来自对相关问题的回答:https://***.com/a/1255303/223837。)
【讨论】:
Grmph。这个解决方案似乎对相当多的构建有帮助,但现在我们连续有两个失败的构建。所以问题又回来了……【参考方案4】:我的几个项目也发生了完全相同的事情。我发现(确实推断)它与我的 RIA 和 Silverlight 的升级路径有关。我得到了一台新机器,所有更新都打开了,它仍然发生。但是,当我从头开始重新创建项目(复制文件和设置,而不是“生成”的程序集信息)时,问题就消失了。
我想这不是您期望的明确答案,老实说,从头开始重新创建解决方案很痛苦。我确实怀疑(也是我能得出的唯一结论)它与某些 GAC 声明或其他要求使用早期版本的 RIA 框架的声明有关。
我已经安装了一个 RIA 版本并使用它进行编码,在此期间有几个 Silverlight 更新连续发生。从那以后我没有遇到任何问题。
【讨论】:
这里有同样的经历:我们在构建服务器上遇到过这种情况,但只有在我们移到新服务器时它才会消失。我在我的开发系统上有它(但很少),我很确定一旦我转移到一个新系统它就会消失。还是很烦人。【参考方案5】:我找到了解决这个问题的方法,到目前为止,它已经解决了我运行它的每台服务器和客户端上的问题。
我最初的项目布局有一个 Web 项目,它充当 RIA 组件和 Silverlight 应用程序本身的宿主。我为 RIA 服务创建了一个类库,将我所有的 RIA 逻辑移到那里,并从 Web 项目中添加了对它的引用。然后我更新了 Silverlight 中的 RIA 链接以指向这个新项目。
我必须将以下行添加到 Silverlight app.xaml.cs 文件中,以便身份验证工作。
((WebAuthenticationService)WebContext.Current.Authentication).DomainContext
= new RiaNamespace.AuthenticationDomainContext();
【讨论】:
【参考方案6】:在构建期间删除或禁用您的病毒扫描程序。也为我工作!
【讨论】:
【参考方案7】:我遇到了同样的问题。
我刚刚更改了“Assembly Version”号,我的项目没问题。
【讨论】:
以上是关于错误 MSB4018:“CreateRiaClientFilesTask”任务意外失败 - 尝试访问已卸载的 AppDomain的主要内容,如果未能解决你的问题,请参考以下文章
错误 MSB4018:“CreateRiaClientFilesTask”任务意外失败 - 尝试访问已卸载的 AppDomain
MSB4018 “ResolveComReference”任务意外失败
Visual Studio 2019 编译.Net Core Console项目出现MSB4018 The "CreateAppHost" task failed unexpec(