2012-04-20 20 views
2

我正在與VS2008VS2010同時用於不同的項目。最近,我試圖以產生用於實體項目的系列化組件和無法產生通過Visual Studio 2010中,則這個拋出了以下錯誤:試圖加載具有不正確格式的組件

An attempt was made to load an assembly with an incorrect format: X:\Dev\Proj\X.Entities\bin\Debug\X.entities.dll. 

這是後生成事件我對實體設置項目

"$(FrameworkSDKDir)\Bin\sgen" /nologo /force $(TargetFileName) 
copy "$(TargetDir)X.Entities.Serializer.dll" "$(SolutionDir)\X.Site\Bin" 

我能夠產生來自VS 2010的命令行串行DLL。 對於VS2008項目;線路正常工作。但是,這些錯誤在VS2010項目上!

VS2010有不同的FrameworkSDKDir變量嗎?如果不是,我該如何修改它以適用於VS2010和VS2008項目?

順便說一句,我使用win 2008 Server 32位操作系統,IIS 7進行開發。

+0

有4個版本,在VS2010 sgen.exe的。 32位與64位和CLR 2與CLR 4的組合。我猜你正在獲得.NET 4版本,並試圖將它加載到一個目標爲CLR 2的項目中。 – 2012-04-20 12:07:25

+1

@HansPassant:所有項目都已設置到4.0框架,因此我不認爲它試圖加載CLR 2.即使它指向,我該如何改變它? – Kay 2012-04-20 12:16:08

+0

首先你必須確定問題,然後你可以考慮修復它。使用ildasm.exe驗證您的假設,它會在清單中顯示預期的CLR版本。 – 2012-04-20 12:20:30

回答

3

您指向的sgen用於CLR 2.0。理想情況下,它將位於C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin。

在「C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0A \ bin \ NETFX 4.0 Tools」下有一個sgen 4.0版本可以解決問題。

你後生成的命令應該這樣開始:

"$(FrameworkSDKDir)\bin\NETFX 4.0 Tools\sgen" 
相關問題