2012-03-28 76 views
5

即使標題相同,此問題也不同於發佈的問題herehere錯誤MSB4018:「CreateRiaClientFilesTask」任務意外失敗 - 嘗試訪問卸載的AppDomain

問題間歇性出現。如果項目已經清理完畢或正在使用新的結帳程序,則始終會出現該錯誤。立即再次推送構建通常會導致構建成功。我得到的堆棧跟蹤是:

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。

我絕對使用MSBuild的32位版本,因爲試圖使用64位版本失敗,未能水化實體框架模型。我沒有使用/ m開關並行構建它。

該項目最初是一個Web項目(託管Silverlight控件所在的站點,RIA服務幷包含業務邏輯)和一個Silverlight項目。將其更改爲3個項目(使用包含該邏輯的類庫)沒有任何區別。

我計劃試着做的第二件事是將託管RIA服務的項目與託管Silverlight應用程序的項目分開,但這對我們來說並不理想(我甚至不確定它會起作用)。

+0

備案:一個密切相關的問題是http://stackoverflow.com/q/4450340/223837。 – 2014-04-08 14:43:59

回答

0

我發現這個問題的解決方案,迄今爲止已解決了我從中運行它的每個服務器和客戶端上的問題。

我的初始項目佈局有一個Web項目,充當RIA組件和Silverlight應用程序本身的主機。我爲RIA服務創建了一個類庫,將我所有的RIA邏輯移到那裏,並從Web Project中添加對它的引用。然後我更新了Silverlight中的RIA鏈接以指向這個新項目。

我不得不將以下行添加到Silverlight app.xaml.cs文件中,以便驗證正常工作。

((WebAuthenticationService)WebContext.Current.Authentication).DomainContext 
    = new RiaNamespace.AuthenticationDomainContext(); 
0

我的確有同樣的事情發生在我的一些項目上。我發現(推斷)它與我的RIA和Silverlight的升級路徑有關。我得到了一臺新機器,所有的更新,它仍然發生。但是,當我從頭開始重新創建項目(複製文件和設置,而不是'生成的'程序集信息)時,問題就消失了。

不是您期望的確切答案,我認爲,說實話,從零開始重新創建解決方案非常痛苦。我懷疑(以及我可能帶來的唯一結論),這與一些GAC聲明或其他要求提供早期版本的RIA框架的聲明有關。

我已經安裝了RIA的一個版本,並使用它進行編碼,並且在此期間發生了一連串的Silverlight更新。自那以後我沒有任何問題。

+0

在這裏也有同樣的體驗:我們在構建服務器上使用了它,只有當我們移動到新服務器時它纔會消失。我已經在我的開發系統上(但很少),並且我相信一旦我轉向新的系統,它就會消失。仍然很煩人。 – 2012-04-14 07:32:21

1

這個例外令我瘋狂!我也嘗試清理ASP.Net臨時文件夾,清理解決方案中的所有項目,以管理員身份運行VS等。但仍然存在此問題。我對這個問題的解決方案是兩次重建Web項目。

3

就我而言,這個例外是由McAffee的反病毒應用程序引起的。禁用「On-Access」(或者是「On-Demand」)功能可以解決問題。

我以前在微軟的Security Essentials中遇到類似的問題,通過添加下面的排除項解決了這個問題。我懷疑這是'臨時ASP.Net文件'文件夾排除,這將需要解決這裏的問題。

排除的文件和位置

  • C:\ TEMP \ DEFAULT \ NuGet.exe
  • C:\ TEMP \ NativeImage \ NuGet.exe
  • C:\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319 \臨時ASP.NET文件
  • NuGet.exe

排除d流程

  • C:\ Program Files文件(x86)的\ Common Files文件\微軟共享\ DevServer \ 11.0 \ WebDev.WebServer40.EXE
  • C:\ Program Files文件(x86)的\微軟的Visual Studio 11.0 \ Common \ 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
+0

這也爲我解決了這個問題,儘管我沒有排除我刪除McAfee和安裝其他東西的東西。 – BenCr 2013-03-13 09:06:51

+0

這也解決了我們的問題。但是,由於公司政策,我們無法永久禁用McAfee或更改排除條款,並且我們找到了將「臨時ASP.Net文件」移動到其他位置的方法。我爲此添加了單獨的答案。 – 2014-04-08 14:27:05

0

刪除或禁用您的病毒掃描程序在構建期間。也爲我工作!

1

在我們的案例中,我們遇到了同一問題的另一個答案(https://stackoverflow.com/a/14125687/223837)中報告的相同問題:McAfee奇怪地干擾了「Temporary ASP.NET Files」中的文件。但在我們的案例中,由於公司政策,我們無法禁用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://stackoverflow.com/a/1255303/223837。)

+0

Grmph。這個解決方案似乎對一些構建有幫助,但現在我們有兩個失敗的構建。所以問題回來了... – 2014-04-09 14:46:53

0

我有同樣的問題。

我剛更改了「Assembly Version」編號,我的項目沒問題。

相關問題