я пытался пропустить .net сильную проверку имен на обоих Win10 & Win7, после How to disable strong name validation и this введите следующий comamnds на x86 и amd64 среды.Не может пропустить .net сильную проверку имени на окнах
vcvarsall.bat amd64
sn /Vr *
vcvarsall.bat x86
sn /Vr *
, но по-прежнему получать жалобы:
=== Pre-bind state information ===
LOG: User = US\Hauck
LOG: DisplayName = TestDll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b1cf2005f5cbe0bd (Fully-specified)
LOG: Appbase = file:///D:/myprojects/bin/
LOG: Initial PrivatePath = NULL
Calling assembly : TestDriver, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b1cf2005f5cbe0bd.
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: TestDll, Version=0.0.0.0, Culture=neutral, PublicKeyToken=b1cf2005f5cbe0bd
LOG: Attempting download of new URL file:///D:/myprojects/bin/TestDll.DLL.
WRN: Comparing the assembly name resulted in the mismatch: PUBLIC KEY TOKEN
ERR: Failed to complete setup of assembly (hr = 0x80131040). Probing terminated.
После прибегая к помощи много я до сих пор понятия не имею, как пропустить проверку.
Ссылки:
- How to: Enable a 64-Bit Visual C++ Toolset on the Command Line
- Bypassing strong-name verification for a .Net assembly
- How to: Disable the Strong-Name Bypass Feature
Вы преследуете неправильное решение, проблема в том, что файл Interop.PCOMMSERVERLib.dll, найденный во время выполнения, не совпадает с тем, с которым вы скомпилировали свою программу. Что не является необычным, не совсем очевидно, что вам нужно использовать параметр/keyfile в Tlbimp.exe. В частности, если это не было сделано вами. Независимо от того, что вы сделали, чтобы исправить ошибку компилятора, у вас возникли проблемы. Исправьте проблему, скопировав измененную dll dll, желательно всегда с помощью Copy Local = True. И обновите свой инструментарий, и поныне до сих пор не нужны библиотеки взаимодействия. –
Спасибо за ответ, @Hans, теперь у меня обновлен мой журнал, сильные имена referencedll.dll и runtime testdll.dll отличаются, я использую его для проверки пропуска проверки, и он не работает должным образом. – Cosmore
Опять же, это не имеет ничего общего с сильной проверкой имени. Имя сборки отличается. Обычно вы можете написать bindingRedirect в файле app.exe.config, чтобы заставить совпадение, но это не работает в конкретном случае, когда PublicKeyToken имеет значение null. Решение слишком просто, чтобы потерять сон, сборка interop не содержит никакого кода, поэтому просто скопируйте правильную DLL. –