2010-05-10 97 views
13

我有一個針對.NET v3.5的2010項目。令人費解的是,我無法再構建v3.5項目。該項目沒有添加任何引用。它甚至不會讓我添加對System.Core的引用,因爲它是由'構建系統'添加的。Visual Studio 2010不能再構建.NET v3.5

警告CS1685:預定義類型「System.Func」被在全球 別名 多個程序集定義;使用來自 定義 'C:\的Windows \ Microsoft.NET \框架\ v4.0.30319 \ mscorlib.dll中'

IFilter.cs(82,49):錯誤CS0433:類型 'System.Func' 在存在'c:\ Program Files (x86)\ Reference Assemblies \ Microsoft \ Framework \ v3.5 \ System.Core.dll' and 'c:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ mscorlib .dll'

看起來像是搶到4.0,但我不太清楚如何解決它。其他人遇到這個?

同事有這個相同的問題。花的Windows重新安裝到糾正問題

我已經開了這一個錯誤:如果編譯器設置爲verbose我看到這個https://connect.microsoft.com/VisualStudio/feedback/details/558245/warning-cs1685-when-compiling-a-v3-5-net-application-in-visual-studio-2010

FrameworkPathOverride = Ç :\ WINDOWS \ Microsoft.NET \框架\ v4.0.30319

這是defined爲:

指定mscorlib.dll 和microsoft.visualbasic.dll的位置。這個 參數相當於編譯器vbc.exe 的 /sdkpath開關。

其他一些有趣的花絮:我一起創建了一個新項目,根本無法構建v3.5。我可以構建2.0,3.0,3.5客戶端配置文件,4.0和4.0客戶端配置文件,沒有任何問題。 VB.NET可以構建v3.5,但C#不能。我試過重新安裝.NET 3.5,4.0和Visual Studio 2010,但沒有成功。 Visual Studio調試日誌顯示沒有什麼有趣的,安全模式不起作用。

試圖避免在Windows重裝...

編輯:我已經認識到別人都面臨這個問題爲好。 LinkLinkLink


重新安裝好幾倍。 Visual Studio卸載不會自行清理。我已經開發了一個虛擬機開發,直到我有機會重新安裝我的主操作系統。

回答

7

的問題是造成這一post所做的更改。強制加載最新的CLR版本是造成問題的原因。小心!

+0

我有完全相同的問題,即使我刪除了我在1中設置的註冊表項(在鏈接中),甚至試圖將它們設置爲值0,但仍然無法在框架3.5中構建。你修復它沒有重新安裝? – sabanito 2011-08-29 16:37:18

+0

剛剛刪除該密鑰後,它開始工作。對不起:| – 2011-09-01 17:57:52

0

這裏一個建議:

  1. 清潔您的解決方案,然後重試。如果沒有成功進行第2步。
  2. 卸載通過右鍵單擊該項目,並選擇條目「卸載項目」
  3. 再次單擊鼠標右鍵,選擇「編輯項目」
  4. 確保項目目標正確framework版本查找和設置以下標記值:
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion> 
  • 清理項目的參考列表:
  • <ItemGroup> 
        <Reference Include="System" /> 
        <Reference Include="System.Data" /> 
        <Reference Include="System.Xml" /> 
        <Reference Include="Microsoft.CSharp" /> 
        ... 
    </ItemGroup> 
    

    確保不存在重複引用。

    我希望這會有所幫助。

    如果沒有,備份您的項目文件,刪除該項目,並重新添加到新的項目。這應該很有可能。

    +0

    感謝您的提示,但項目的目標是3.5,因此應該在項目文件中定義任何參考。 – 2010-05-10 20:55:53

    0

    我想有可能是在一個項目或解決方案文件中的4.0框架的引用 - 也許有不同的TargetFrameworkVersion元素。或者,bin或obj文件夾中的某些文件不同步。

    嘗試清理解決方案,甚至手動刪除bin和obj文件夾的內容。如果這沒有幫助,只需將當前版本與Subversion中的上一個工作版本進行比較,或者比較您正在使用的版本控制系統,您應該看到發生了變化。

    +0

    看起來像是盒子,而不是項目。注意我的編輯... – 2010-05-10 21:02:45

    +0

    聽起來不太可能,但是您是否在機器配置中查找了彙編重定向? – 2010-05-10 21:24:17

    +0

    我將如何去核實?謝謝 – 2010-05-10 21:28:04

    1

    小騙子: 打開VS210項目屬性頁OB建立先進的檢測不引用mscorlib.dll中。 然後在文本編輯器打開該項目文件,並添加到引用:

    <Reference Include="mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" /> 
    

    再見

    0

    this post在Microsoft Connect,您可能能夠通過添加一行到您的解決方案或項目來解決這個文件將AspNetCompiler的ToolPath設置爲「C:\ Windows \ Microsoft.NET \ Framework \ v2.0.50727」。

    0

    我已經多次看到此問題 - 解決方法可能非常簡單。

    在我的情況下,有問題的VS項目包含許多虛擬目錄(20)。

    一旦擊中,我再次刪除所有的虛函數迪爾斯,然後重新創建一個在時間和每次重建項目尋求這個erorr。

    當我添加兩個虛擬背對背沒有編譯錯誤再次出現。

    的解決辦法是刪除最後VDIR,然後重建,恢復Vdirs然後重建。 就在那些通過有條不紊地重複一個過程,可以成爲一個需要白天,晚上,深夜,並可能在當地釀造廠釀造好啤酒的「timevamp」或「sunktime」的過程中發現的那些噴嚏怪誕的東西。