Релиз не работает, ссылаясь на DLL FW 2.0 в WinWorm FW 4.0
С трассировкой это означает, что мне нужно сделать локаль нейтральной, чтобы ссылочная библиотека DLL работала. Есть идеи, как его установить? или вы устанавливаете нейтраль как что-то?
Я сделал тестовую программу. Я использую VS2010, VB.net, .Net Framework 4.0, в формах Windows. Это локальное тестовое приложение с минимумом работы (форма с парой меток и парой кнопок). Мне дали.dll, которая была сделана в.net Framework 2.0. Поэтому я сослался на это. Это не сработало. Поэтому я искал решение и обнаружил, что оно немного отличается от другого, так как мне пришлось сделать 2 вещи, чтобы оно заработало:
Добавьте "startup useLegacyV2RuntimeActivationPolicy="true"" в app.config И измените целевую платформу с ".NetFW4.0 client" на ".NetFW4.0". Это заставило его работать на моем ПК для разработки. Отлаживает и работает правильно через VStudio или.exe.
Теперь: я создаю исполняемый файл и перемещаю его для тестирования ПК, и он не работает. программа просто не загружается. Под этим я подразумеваю, что он никогда не достигает рукоятки загрузки и просто закрывается. После некоторой настройки для тестирования появилось сообщение:
Не удалось загрузить файл или сборку 'banortepinpad.dll' или одну из ее зависимостей. Приложение не удалось запустить, потому что его параллельная конфигурация неверна. Пожалуйста, смотрите журнал событий приложения или используйте инструмент командной строки sxstrace.exe для более подробной информации. (Исключение из HRESULT: 0x800736B1)
У меня есть DLL внутри папки. Я неутомимо искал в Google и на других сайтах безрезультатно, нашел 1 парня, у которого был тот же самый эрор, и никто не мог ответить, некоторые другие находки не применимы к этому делу, так как все еще не работает. Может ли кто-нибудь быть таким добрым и пролить свет на этот вопрос?
заранее спасибо
РЕДАКТИРОВАТЬ: Я запустил sxstrace и нашел это:
=================
Start Activation context generation .
Input parameter :
Flags = 0
ProcessorArchitecture = x86
CultureFallBacks = es-ES , is
ManifestPath = C : \ Banorte \ BanortePinPad.dll
AssemblyDirectory = C : \ Banorte \
Application Config File =
-----------------
INFO: analyzing manifest file C : \ Banorte \ BanortePinPad.dll .
INFORMATION : defining the identity of the manifesto is (null ) .
INFO: Reference :Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195"
INFO: Reference :Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50608.0"
INFORMATION : resolving reference Microsoft.VC80.CRT,processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b",type="win32",version="8.0.50727.6195".
INFO: x86 solving ProcessorArchitecture reference .
INFORMATION : solving Neutral culture .
INFORMATION : binding policy applied .
INFO : Find publisher policy at C:\Windows\WinSxS\manifests\x86_policy.8.0.microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4940_none_516d712b0f495a45.manifest
INFO: not found redirection binding policy .
INFO: start assembly poll .
INFORMATION : Could not find the assembly in WinSxS .
INFO : Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC80.CRT\8.0.50727.6195__1fc8b3b9a1e18e3b\Microsoft.VC80.CRT.DLL.
INFO : Attempt to probe manifest at C: \ Banorte \ Microsoft.VC80.CRT.DLL .
INFO : Attempt to probe manifest at C: \ Banorte \ Microsoft.VC80.CRT.manifest .
INFO : Attempt to probe manifest at C: \ Banorte \ Microsoft.VC80.CRT \ Microsoft.VC80.CRT.DLL .
INFO : Attempt to probe manifest at C: \ Banorte \ Microsoft.VC80.CRT \ Microsoft.VC80.CRT.manifest .
INFORMATION : Could not find the manifest of the culture Neutral .
INFORMATION : complete assembly poll .
ERROR : can not resolve the reference
ERROR: Activation context generation .
Finish Activation context generation .
Вот мое содержимое app.exe.config:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />
</startup>
</configuration>
Это то, что я получил после редактирования и исправления app.exe.config, как показано выше.
Означает ли это, что для работы мне нужен манифест сборки?
Я до сих пор не нашел способ сделать это. Я уже проверил сборку и установил распространяемый vC++ на целевой компьютер. Кто-нибудь знает, что установщик содержит библиотеку VSMC80?
У кого-нибудь есть другие идеи о том, что может происходить? Любой вклад будет более чем оценен.
1 ответ
Теперь: я создаю исполняемый файл и перемещаю его для тестирования ПК, и он не работает. программа просто не загружается. Под этим я подразумеваю, что он никогда не достигает рукоятки загрузки и просто закрывается. После некоторой настройки для тестирования появилось сообщение:
Есть две потенциальные проблемы.
Убедитесь, что вы развернули свой
app.Config
на машине развертывания. Это будет файл с именемYourApplication.exe.config
и должен быть рядом с файлом.exe. Это то, что правильно устанавливает политику времени выполнения при развертывании.Убедитесь, что вы нацелены на правильную архитектуру процессора, так как вы используете сборку в смешанном режиме. Если ваша система в x86, а развертывание - x64, а ваше приложение предназначено для AnyCPU, сборка в смешанном режиме не загрузится. Настройка явно использовать x86 исправит это.
Убедитесь, что любые собственные библиотеки DLL, используемые сборкой в смешанном режиме, также доступны в целевой системе. Это часто включает установку правильной среды выполнения VC++.