Я думаю, что я попадаю в общую категорию: «Это прекрасно работает в моей среде разработки, но в любом другом месте я получаю странные результаты», и, несмотря на все мои усилия, я только более запутался.
У меня есть 2 приложения.Одним из них является приложение .NET 4 C #, а другим - (я думаю) .NET 3.5 VB.Приложение C # создает DLL, в настоящее время у меня есть версия этой DLL, скомпилированная с 3.5, чтобы я мог использовать ее в своем приложении VB.У меня есть источник для приложения VB, но не приложение C #.Я никогда не компилировал приложение C # на своем компьютере.
В этой DLL он ссылается на библиотеку на основе C.(Я чувствую, что это проблема.)
В моей среде разработчика я могу использовать эту DLL без проблем в моем приложении VB.Однако, когда я пытаюсь выполнить эту настройку на другом компьютере, он действует так, как будто биты, относящиеся к этой встроенной DLL на основе C, не являются самой последней версией.
- gacutil подтверждает, что DLL C # неисходящий из GAC
- FUSLOGVW подтверждает, что полное имя C # DLL, на которое ссылается DLL, одинаково как в среде dev / non-dev
- В моем приложении VB, так и в моем app.config,Я явно объявляю имя, токен и версию DLL C # DLL.
- В моем приложении VB, по моей ссылке на эту DLL, у меня "Копировать локально" и "Определенная версия" установлены в False
- Даже при копировании моей DLL на основе C и DLL C # на целевую машину, казалось бы, плохая ссылка все еще встречается.
- Даже при новой загрузке приложений на новой системе ... проблема возникает сама по себе.
Не то, чтобы я получал какие-либо ошибки.Приложение VB по-прежнему работает нормально.Приложение VB создает и использует эту C # DLL (в которой есть C C DLL), и я вижу, что несоответствия из VB приложения, похоже, являются проблемами с C DLL.У меня никогда не было исходного кода для приложения C # на моей машине, и поэтому я понятия не имею, почему он работает хорошо сам по себе, но нигде больше.
Я чувствую, что достигКонец того, что я мало знаю об этом, и я не вижу больше никуда идти.Однако я чувствую, что смогу воссоздать рабочую среду на других машинах.
На что еще я могу посмотреть?
Редактировать
Я подумал, что могу добавить более конкретную информацию в надежде, что она приведет к решению.В настоящее время я обновил код VB для работы с различными значениями.
На этом рисунке представлены значения, возвращенные одним из методов C-DLL на моем компьютере.
Все выглядит так, как должно.Затем я беру свои DLL и исполняемый файл на новую машину, запускаю ее, и эти же элементы выглядят так:
Я проверял GAC несколько раз.Я в течение нескольких часов безучастно смотрел на загруженные журналы сборок, чтобы заметить, что одни и те же (правильные) библиотеки DLL загружаются в обеих средах.Я гарантировал, что на обеих машинах установлены одинаковые обновления MS.Я удалил все сторонние библиотеки DLL из обеих сред, которые используются в проекте, и перегрузил их в обе.
На данный момент, я не имею ни малейшего представления, что является причиной этого.Там нет ошибок.Он работает так же счастливо на всех компьютерах, как и на моей, но я полностью убежден (возможно, в собственной неспособности увидеть реальную проблему), что моя машина разработки создает / имеет «что-то», что мне не удается переместить, изменитьсправка и т. д. В настоящий момент я чувствую, что исчерпал свои ограниченные знания по этому вопросу.
О, последнее, DLL были предоставлены мне из среды VS2010.Завтра у меня будет 2010 год, и я надеюсь использовать обычную DLL-библиотеку .NET 4 вместо 3.5, которую я запрашивал.В настоящее время это моя последняя надежда на исправление этой проблемы, за исключением того, что я изменил код VB.
Есть идеи?