簡體   English   中英

缺少System.Windows

[英]Missing System.Windows

我有一個相當大的解決方案,其中包含一些Silverlight和WPF項目,以及一些類庫和其他東西。

該項目之一是類庫,該類庫引用了一個Silverlight應用程序,該應用程序引用了System.Windows

但是在運行時,出現錯誤:

{"Could not load file or assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' or one of its dependencies. The system cannot find the file specified.":"System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"}

我在GAC( C:\\Windows\\assembly )中查看,然后在其中看不到...

這里發生了什么事?

參考是: c:\\Program Files\\Reference Assemblies\\Microsoft\\Framework\\Silverlight\\v4.0\\System.Windows.dll存在。

在我看來,您的WPF應用程序正在加載引用Silverlight程序集的類庫。 貓狗狗都行不通。 如果WPF和Silverlight應用程序都引用了程序集,則必須使用不同的框架程序集引用對其進行兩次編譯。 這需要兩個項目。 將WPF和Silverlight放在不同的解決方案中是最好的避免麻煩的方法。

我在其他任何地方都找不到這種解決方案,但是偶然發現它是一次反復試驗……

錯誤消息在我的情況下有點誤導。 提示是,它實際上並不是“ System.Windows”程序集本身,而是相關程序集之一

您可能想要做的是檢查您的GAC,並查看其中是否有以下程序集:

  • Windows系統
  • System.Windows.Controls
  • System.Windows.Controls.Toolkit
  • System.Windows.Controls.Layout.Toolkit

嘗試從GAC中刪除它們,然后進行重建。 如果不起作用,只需打開兩個Windows資源管理器窗口,然后將它們從c:\\ Program Files(x86)\\ Reference Assemblies \\ Microsoft \\ Framework \\ Silverlight \\ v4.0 \\ System.Windows.dll文件夾或文件夾中找到Silverlight Toolkit,您將回到開始的位置。

我懷疑這是正在發生的事情:Visual Studio 2010編譯器對於在進行構建時從何處獲取這些引用的程序集感到困惑,因為GAC程序集始終優先於另一個程序集副本(甚至是VS2010使用的參考程序集文件夾)。 因此,即使從技術上講,使用相同的ID密鑰進行組裝是正確的,並且VS2010編譯器的所有功能都無法確定要使用哪個庫進行構建,並且它將拒絕完成構建。

我在兩種情況下都遇到過類似的錯誤,可能在這里適用:

  1. 當我引用的程序集需要一個我沒有引用的程序集時。 在這種情況下,這意味着System.Windows正在使用其他內容,您也需要添加引用。

  2. 更有意思的情況是當VS2010為我自動選擇“ .Net Framework 4客戶端配置文件”時,我實際上需要“ .Net Framework 4”(沒有“客戶端配置文件”)。 選擇項目屬性,然后查看設置。

坦率

根據您的要求提供其他說明:

在VS2010中打開“解決方案”,右鍵單擊有問題的項目(而不是解決方案行),然后從底部選擇“屬性”。 在生成的GUI中,選擇“應用程序”選項卡,並確保“目標框架”名稱中沒有“客戶端配置文件”。 那應該是“ .NET Framework 4”而不是“ .NET Framework 4 Client Profile”。

有時,您將類放在不同的項目中,例如,可以為viewmodels創建一個項目,如果是這種情況,則需要引用PresentationCore.dll,這是使您能夠訪問System.windows的dll,因此您可以使用ICommand用於命令綁定

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM