Много предупреждений сборки, когда COM-объекты на ActiveDs или MSXML2 ссылаются

Решения уже, если, я сказал бы, что потребность проигнорировать одну часть репозитория регулярно является ясным знаком плохой структуры репозитория. Попытайтесь найти способ переместить его в другое местоположение в репозитории или чем-то как этот.

12
задан gyrolf 8 November 2008 в 10:49
поделиться

2 ответа

Согласно комментарию в статье MDSN о TLBIMP для 2.0 , вы не можете решить эту проблему без запуска TLBIMP самостоятельно.

Это было легко воспроизведите вашу проблему с помощью VS. Я также воспроизвел его, запустив TLBIMP вручную из подсказки комментария VS:

   tlbimp c:\WINNT\system32\activeds.tlb /out:interop.activeds.dll

Исправление заключалось в использовании переключателя / silent

   tlbimp c:\WINNT\system32\activeds.tlb /silent /out:interop.activeds.dll

Как указано в комментарии в статье MSDN, ссылка на COM становится ссылкой на сборку .net для сборка взаимодействия, которую вы создали сами.

Я не эксперт по VS, но я проделал эту работу, добавив в проект предварительную сборку:

    "$(DevEnvDir)\..\..\SDK\v2.0\bin\tlbimp" c:\WINNT\system32\activeds.tlb
            /namespace:ActiveDs /silent /out:"$(ProjectDir)interop.activeds.dll"

Создал ее один раз, так что у меня будет dll для добавления ссылки с обзором таб. Добавил ссылку на interop.activeds.dll в корень моего проекта, а затем построил заново. Вы можете сделать это другим способом, например, с помощью внешнего файла make через проект C ++. Это скорее POC.

6
ответ дан 2 December 2019 в 19:56
поделиться

Вы можете остановить выдачу предупреждений с помощью:

    #pragma warning disable warning-list
    #pragma warning restore warning-list

, где список предупреждений представляет собой список номеров предупреждений, разделенных запятыми.

Предупреждение означает, что импортируемая библиотека типов содержит что-то непереводимое в управляемый код. но с ними можно было справиться с помощью операций с указателями в небезопасном блоке кода. Код также нельзя было перевести в .Net 1.1, но компилятор не был достаточно умен, чтобы предупредить вас о ловушке, в которую вы можете попасть, если воспользуетесь одним из методов, о которых он предупреждает.

-2
ответ дан 2 December 2019 в 19:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: