С# windows application Событие: CLR20r3 при запуске приложения
Я создал приложение С# и установил его на свой тестовый ящик. Мое приложение отлично работает на моем компьютере разработчика, но когда я устанавливаю его на другой компьютер, оно вылетает в Main(). Я получаю EventType: CLR20r3
вот сообщение о событии
Problem signature:
Problem Event Name: CLR20r3
Problem Signature 01: logfileviewer.exe
Problem Signature 02: 1.0.0.0
Problem Signature 03: 4f356c9c
Problem Signature 04: LogFileViewer
Problem Signature 05: 1.0.0.0
Problem Signature 06: 4f356c9c
Problem Signature 07: 94
Problem Signature 08: 44
Problem Signature 09: System.IO.FileNotFoundException
OS Version: 6.1.7601.2.1.0.256.1
Locale ID: 1033
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Я использовал детали и посмотрел код ошибки в IL дизассемблере и вернул камеру со следующим...
Method #5 (06000094)
-------------------------------------------------------
MethodName: .ctor (06000094)
Flags : [Public] [HideBySig] [ReuseSlot] [SpecialName] [RTSpecialName] [.ctor] (00001886)
RVA : 0x000081d0
ImplFlags : [IL] [Managed] (00000000)
CallCnvntn: [DEFAULT]
hasThis
ReturnType: Void
No arguments.
.NET 4.0 был удален и переустановлен в системе и ничего не изменил. Я искал по всей сети, и у всех с той же проблемой, кажется, нет решения. Сейчас я потратил полтора дня на эту проблему. Я не хотел бы пропустить мой крайний срок из-за невозможности запустить приложение.
Это единственный код в моем Main()
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new frmMain());
}
Вот подробности из Event Viewer
Application: LogFileViewer.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack:
at LogFileViewer.frmMain.InitializeComponent()
at LogFileViewer.frmMain..ctor()
at LogFileViewer.Program.Main()
EventData
Application: LogFileViewer.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.IO.FileNotFoundException
Stack: at LogFileViewer.frmMain.InitializeComponent() at LogFileViewer.frmMain..ctor() at LogFileViewer.Program.Main()
Не уверен, как дизайнер может иметь исключение FileNotFound. Я использую DotNetBar.dll и ссылаюсь на него из каталога установки, так что это должно быть хорошо. Я могу опубликовать свой дизайнер, если хотите, но там есть немало.
Ответы
Ответ 1
Я видел эту проблему, когда мое приложение зависело от ссылочной сборки, отсутствовавшей на машине развертывания. Я не уверен, что вы подразумеваете под "ссылкой DotNetBar из каталога установки" - убедитесь, что он установлен в CopyLocal = true в вашем проекте или существует в том же полный путь на вашей машине разработки и производства.
Ответ 2
Я столкнулся с той же проблемой, когда я создал приложение в окне Windows 7, которое ранее поддерживалось на компьютере XP.
Программа работает нормально, когда она построена для Debug, но с ошибкой при построении для Release. Я нашел ответ на странице свойств проекта. Перейдите на вкладку "Построить" и попробуйте изменить целевую платформу "Любой процессор" на "x86".
Ответ 3
.NET имеет два CLR 2.0 и 4.0. CLR 2.0 работает до .NET framework 3.5. CLR 4.0 работает с .NET 4.0 и далее. Возможно, ваше решение использует другую CLR, чем ваши ссылочные сборки. В вашей локальной среде разработки у вас могут быть и CLR, и, следовательно, вы не столкнулись с какой-либо проблемой. Однако, когда вы перешли в среду развертывания, у них может быть только одна CLR, и вы получили эту ошибку.
Ответ 4
Они боролись с этим все утро и теперь решили и почему это произошло. Проводка с надеждой на помощь другим.
Я установил Krypton.Toolkit, который автоматически добавил инструменты в панель инструментов Visual Studio. Затем я добавил инструменты в конструктор, который автоматически добавил dll к исходным ссылкам, однако набор инструментов был отмечен как CopyLocal = false
Я построил установщик, используя все DLL файлы в папке создания выпуска (конечно, вышеупомянутая DLL не была там).
Установка copylocal = true, а затем восстановление установщика, все работает нормально.
Ответ 5
Чтобы решить набор задач CLR20r3 - Local User Policy \ Computer Configuration \ Windows Settings \ Security Settings \ Local Policies \ Security Options - System cryptography
: используйте криптографические алгоритмы, совместимые с FIPS 140, включая шифрование, хэширование и подпись - Отключить