Вынудите.NET interop использовать локальный COM DLL

Вы можете сделать следующее:

  1. установить локальную переменную на false

  2. установить эту переменную true в первом цикл, когда вы хотите разорвать

  3. , тогда вы можете проверить во внешнем цикле, что, если условие установлено, то и разрыв с внешним циклом.

    boolean isBreakNeeded = false;
    for (int i = 0; i < some.length; i++) {
        for (int j = 0; j < some.lengthasWell; j++) {
            //want to set variable if (){
            isBreakNeeded = true;
            break;
        }
    
        if (isBreakNeeded) {
            break; //will make you break from the outer loop as well
        }
    }
    
7
задан Xiaofu 29 July 2009 в 08:40
поделиться

2 ответа

5
ответ дан 6 December 2019 в 12:53
поделиться

Павел указал мне в правильном направлении, так что я отмечу его как ответ. На благо всех остальных я сделал следующее:

  1. Добавил ссылку на исходный файл OTAClient.dll и позволил Visual Studio сгенерировать библиотеку взаимодействия.
  2. Щелкните правой кнопкой мыши указанную библиотеку в обозревателе решений и выберите «Свойства». Затем установите для изолированного значения True. Это заставляет VS генерировать файл манифеста, сообщающий вашей программе, что она должна искать вашу COM-библиотеку локально, а не в той, которая указана в реестре.
  3. Специфично для моего сценария - мне также пришлось сослаться на WebClient.dll из Quality Center и установить Изолированный to True и для этого. Это не используется напрямую приложениями, использующими OTA API, но, похоже, на него ссылается OTAClient.dll.

Таким образом, вы можете входить в экземпляры QC и выходить из них, версии которых отличаются от версии, используемой вашим приложением, не нарушая его. В моем случае у меня есть локальный экземпляр QC v9, который используется для автоматизации конкретного проекта (по разным причинам он сильно настроен для удовлетворения наших потребностей, имеет много места для хранения снимков экрана и т. Д.), И к которому подключается мое приложение. Однако для ручного тестирования мне также необходимо войти в систему, используя IE, для экземпляра v9.2, расположенного в другом месте. Если бы я ранее входил в экземпляр v9.2, мне пришлось бы открыть экземпляр v9 в IE и позволить ему повторно загрузить элементы управления перед повторным запуском моего приложения ... а теперь я этого не делаю. :)

имеет много места для хранения снимков экрана и т. д.), и к которому подключается мое приложение. Однако для ручного тестирования мне также необходимо войти в систему, используя IE, для экземпляра v9.2, расположенного в другом месте. Если бы я ранее входил в экземпляр v9.2, мне пришлось бы открыть экземпляр v9 в IE и позволить ему повторно загрузить элементы управления перед повторным запуском моего приложения ... а теперь я этого не делаю. :)

имеет много места для хранения снимков экрана и т. д.), и к которому подключается мое приложение. Однако для ручного тестирования мне также необходимо войти в систему, используя IE, для экземпляра v9.2, расположенного в другом месте. Если бы я ранее входил в экземпляр v9.2, мне пришлось бы открыть экземпляр v9 в IE и позволить ему повторно загрузить элементы управления перед повторным запуском моего приложения ... а теперь я этого не делаю. :)

10
ответ дан 6 December 2019 в 12:53
поделиться
Другие вопросы по тегам:

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