Я разрабатываю COM-совместимые классы с использованием Visual Studio 2008. И использование этих классов в Visual FoxPro 9.0 Когда я скомпилировал библиотеку классов, он регистрируется после компиляции.Метод отладки класса Com
В Visual FoxPro Я создаю объект с этим кодом кусок на окне командной строки:
newObj = CREATEOBJECT("CemT.Deneme.ClassTest")
Когда я хотел Ставить библиотеки классов на Visual Studio я не могу собрать и снова зарегистрировать DLL. Это дает мне эту ошибку:
Unable to copy file "obj\Debug\clCOMTest.dll" to "bin\Debug\clCOMTest.dll". The process cannot access the file 'bin\Debug\clCOMTest.dll' because it is being used by another process.
С этой ошибкой мне пришлось бы выйти из VFP и начать снова. Перед созданием объекта я компилирую библиотеку классов в Visual Studio. Тогда я могу использовать последнюю версию dll.
Это выглядит очень нормально из-за VFP, использующего dll, но есть ли способ сделать это без перезапуска VFP?
DLL имеет жесткий замок на нем, потому что он был загружен в процесс FoxPro. Вам нужно будет убедить FoxPro снова выгрузить эту DLL. Глядя на документы, вам, по крайней мере, потребуется RELEASE. Как вы его называете CoFreeUnusedLibraries() - это догадка. Вместо этого протестируйте свой код с помощью модульного теста. –
Единичный тест будет хорошим, но VFP вызовет классы .NET. Вот почему вызовы функций имеют разные типы параметров. Иногда передача различных параметров может быть трудной или невозможной. RELEASE ALL делает каждую переменную null определенной в окне Command. Но все же я не могу скомпилировать, он дает такую же ошибку. – uzay95
@HansPassant: Модульные тесты для языков без достойного графического отладчика с редактированием и продолжением! (Шутка: модульные тесты по-прежнему хороши, но они дополняют возможность отладки должным образом). – Ben