При попытке объединить несколько сборок в VS сообщениях сборки я побежал в вопрос:Проблемы при использовании ILMerge сливаться .NET 3.5 и .NET 2.0 сборки
ILMerge version 2.13.307.0
Copyright (C) Microsoft Corporation 2004-2006. All rights reserved.
ILMerge /out:Assembly.dll AssemblyA.dll AssemblyB.dll /targetplatform:v2,C:\Windows\Microsoft.NET\Framework\v3.5 /log:log.txt
Set platform to 'v2', using directory 'C:\Windows\Microsoft.NET\Framework\v3.5' for mscorlib.dll
An exception occurred during merging:
Unable to cast object of type 'System.Compiler.Class' to type 'System.Compiler.Struct'.
at System.Compiler.SystemTypes.Initialize(Boolean doNotLockFile, Boolean getDebugInfo, PostAssemblyLoadProcessor postAssemblyLoad)
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
где AssemblyA является текущим выходным проектом $ (TargetFileName) и AssemblyB является ссылочной сборкой.
- AssemblyA => v3.5
- AssemblyB => v2.0
Странная вещь, что когда я изменить команду, чтобы использовать .NET 4 это работает:
ILMerge /out:Assembly.dll AssemblyA.dll AssemblyB.dll /targetplatform:v4,C:\Windows\Microsoft.NET\Framework\v4.0.30319 /log:log.txt
Поскольку я хочу, чтобы объединенная сборка была версией 3.5, а не 4, как мне заставить прежнюю команду работать или как мне разрешить эту ошибку?
Используйте соответствующий каталог для mscorlib, c: \ windows \ microsoft.net \ framework \ v2.0.50727. .NET 3.5 не является новой версией. Помните, что ваша командная строка v4 [опасно неверна] (http://stackoverflow.com/a/13750130/17034). –
Спасибо за комментарий @HansPassant. Я изменил бы первую команду с v3.5 на 2 ... Не могли бы вы сказать мне, как командная строка v4 опасно ошибается? – avantprime
@HansPassant Если вы хотите, чтобы вас зачисляли за предоставление правильного решения, отправьте ответ в ответ. – avantprime