Я использую Visual Studio 2008 для создания решения с двумя проектами: консольным приложением С# и библиотекой DLL С++. Я хочу, чтобы приложение вызывало функцию из dll с помощью P/Invoke. Поэтому я пытаюсь добавить dll в качестве ссылки на приложение С#. Но когда я пробую команду «Добавить ссылку», Visual Studio не позволяет мне это сделать, пока я не задаю свойство /clr в dll (в разделе «Свойства конфигурации: Общие»). Теперь я подумал, что P/Invoke может работать со старыми библиотеками win32. Действительно, если я соберу свою dll без /clr и просто скопирую ее вручную в bin/Debug, то приложение будет работать нормально. Итак, почему /clr требуется для добавления dll в качестве ссылки? И если VS не позволит мне добавить его, есть ли какой-нибудь (чистый) обходной путь, чтобы мое приложение нашло dll?
Я вижу, что у кого-то была аналогичная проблема (хотя и со сторонней dll): Невозможно добавить ссылку DLL на VS 2008 Он получил ответ, что нужно создать оболочку. Но в этом нет необходимости, так как приложение может прекрасно использовать dll; это просто шаг добавления ссылки, который не работает. И кроме того, не будет ли коду обертки нужна ссылка на dll, поднимая ту же проблему, что и раньше? Мне бы очень хотелось получить ответ, который вообще не требует написания оболочки.