SGEN échec: Une tentative a été faite pour charger un assembly avec un format incorrect dans VS2008
J'ai été en mesure de trouver plusieurs questions similaires posées et répondues, mais aucune des réponses ou des conditions précises à appliquer à ma situation.
- J'ai un .NET 3.5 projet en cours de construction pour x64.
- J'ai aussi un x64 en mode mixte de référence (cible également .NET 3.5).
- Dans Visual Studio 2008, j'ai créé un site Web de Référence qui provoque SGEN à exécuter lors d'un Communiqué de construire pour créer le helper DLL.
Si je n'ai pas de référence de la mixed-mode DLL
, cela fonctionne bien. Si je fais référence à la mode mixte DLL, j'ai cette erreur (xxx est juste un espace réservé):
SGEN : erreur : Une tentative a été faite pour charger un assembly avec un
format incorrect:
C:\code\xxx\trunk\xxx\common\xxx\build\winx64\lib\xxx.dll.
C'est les commandes émises:
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\sgen.exe
/assembly:C:\code\xxx\trunk\xxx\xxx\obj\x64\Release\xxx.dll
/proxytypes /reference:..\common\xxx\build\winx64\lib\xxx.dll
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.configuration.dll
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Configuration.Install.dll
/référence:"C:\Program Files (x86)\de Référence
Assemblées\Microsoft\Framework\v3.5\System.Core.dll"
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Data.dll
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.EnterpriseServices.dll
/reference:C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
/référence:"C:\Program Files (x86)\de Référence
Assemblées\Microsoft\Framework\v3.0\System.Runtime.Serialization.dll"
/référence:"C:\Program Files (x86)\de Référence
Assemblées\Microsoft\Framework\v3.0\System.ServiceModel.dll"
/référence:"C:\Program Files (x86)\de Référence
Assemblées\Microsoft\Framework\v3.5\System.Web.Extensions.dll"
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Web.Services.dll
/reference:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.Xml.dll
Des idées?
OriginalL'auteur Anthony | 2012-11-14
Vous devez vous connecter pour publier un commentaire.
Avez-vous essayé de changer
Generate serialization assembly
àOff
, comme suggéré dans cette msdn post? Dans mon cas, c'était le billet.Il suffit d'aller à votre Projet de propriétés, et c'est en vertu de Construire.
OriginalL'auteur Gustavo Mori
Cette erreur apparaît également sur l'accumulation de la machine après l'installation de MSBuild Outils (pour Visual Studio 2013). Le problème est que seule la version 32 bits de sgen.exe est disponible par défaut.
Le problème disparaît après l'installation de la dernière Windows SDK qui comprend la version 64 bits de sgen.exe:
http://msdn.microsoft.com/en-us/windows/desktop/bg162891.aspx
Sur un agent (de la machine) j'ai besoin d'installer l'ancienne version ainsi:
http://msdn.microsoft.com/en-us/windows/desktop/hh852363.aspx
OriginalL'auteur Louis Somers
Tout en tournant l'assembly de sérialisation off, permettra de résoudre le problème, il est juste solution de contournement - à la fin vous aurez à payer pour cela par un ralentissement du temps de démarrage. Le problème est que vous devez appeler sgen.exe de x64 SDK (si vous ciblez x64). Si vous êtes à l'aide de msbuild, mis chemin d'accès correct au sgen comme ceci:
OriginalL'auteur Ondrej Svejdar
C'est une alternative à Ondrej de l' réponse.
Nous venons de faire la modification pour notre Communiqué de configuration dans le fichier de projet (csproj) et de définir le SDK chemin d'accès à la version x64:
Pour répondre à ma propre question - c'est le fichier de projet (.scproj). Une autre question demeure cependant: pourquoi la question n'apparaît pas dans la version debug, mais n'apparaît pas dans la version build?
Selon cette répondre, si
Generate serialization assembly
est fixé àAuto
, il sera désactivé pour Debug et Release (siXmlSerializer
est utilisé dans votre code).OriginalL'auteur John Allers