Ссылки Visual Studio и управление версиями - как это работает?

Используйте ниже PHP-код с именем файла в URL-адресе param «name»

<?php

$fileName = $_GET['name'];

if (isset($fileName)) {


    $zip = new ZipArchive;
    $res = $zip->open($fileName);
    if ($res === TRUE) {
      $zip->extractTo('./');
      $zip->close();
      echo 'Extracted file "'.$fileName.'"';
    } else {
      echo 'Cannot find the file name "'.$fileName.'" (the file name should include extension (.zip, ...))';
    }
}
else {
    echo 'Please set file name in the "name" param';
}

?>
13
задан Mihai Limbășan 16 October 2008 в 20:06
поделиться

4 ответа

По умолчанию для имеющего версию DLLs я полагаю, что VS вызовет точное совпадение. Если Вы посмотрите в свойствах ссылки, однако, то Вы найдете свойство названным "Определенная Версия". Набор, что ко "лжи" и это будет соответствовать более поздним версиям.

у меня нет полной версии VS со мной для нахождения соответствующей ссылки MSDN, к сожалению.

, Кроме того, можно использовать элемент assemblyBinding в app.config.

11
ответ дан 1 December 2019 в 21:39
поделиться

Существует на самом деле два сценария здесь - использование сильного names/GAC или не использование строгих имен.

, Если Вы используете строгие имена и устанавливаете компоненты в GAC, тогда .NET захочет использовать версию компонента, на который ссылался клиент, когда он был скомпилирован. Таким образом в Вашем примере это было бы довольно возможно для Проекта сослаться на базу данных V2, в то время как Вход сослался на базу данных V1, потому что DLLs может быть сохранен параллельно в GAC. Таким образом, если Вы на самом деле захотите Регистрироваться для использования V2 вместо V1, то необходимо будет изменить конфигурационные файлы, чтобы сказать, что "на ссылку на V1 нужно указать на V2". Существуют различные места, чтобы сделать это - файл приложения, файл машины и т.д.

, Если Вы не будете использовать строгие имена, тогда .NET будет значением по умолчанию использовать версию DLL, это находится в той же папке как клиент. Поэтому предположите развертывание Проекта, CommonControls и Входа в систему той же папки как база данных V2. Тогда, даже если Вход был создан против базы данных V1, он попытается использовать компонент в той же папке, т.е. базу данных V2. Пока V2 может предоставить те же общедоступные классы и методы, которые Вход хочет использовать, он будет хорошо работать.

В моей среде - где все наши приложения являются внутренними - мы не используем GAC. Мы просто развертываем все файлы, в которых приложение нужно в единственную папку. Когда у Вас есть много общих компонентов, это просто был бы кошмар для хранения конфигурационных файлов в синхронизации.

Это все очень отличается от COM, где все приложения забрали в настоящее время зарегистрированную копию DLL (принимающий V1, и V2 были двоичные совместимый).

8
ответ дан 1 December 2019 в 21:39
поделиться

Я столкнулся с этим сайтом, который имеет несколько предложений: http://blog.fredrikhaglund.se/blog/2008/02/23/get-control-over-your-assembly-dependencies/

Для получения определенной версии, по-видимому, необходимо ли отредактировать web.config или app.config?

"Наконец, смотрите на свой csproj файл с помощью блокнота (или разгрузите проект в Visual Studio, чтобы быть в состоянии открыть его как текст). Когда Вы добавите ссылки с помощью Visual Studio, Вы получите ссылку на сборку и с номером версии и с открытым ключом, и это может дать Вам некоторую проблему при обновлении блока поставщика до более новой версии".
http://blog.fredrikhaglund.se/blog/2008/02/23/get-control-over-your-assembly-dependencies/

5
ответ дан 1 December 2019 в 21:39
поделиться

Если у Вас есть источник, Вы могли бы использовать ссылки проекта вместо dll ссылок. Тем путем Вы всегда получали бы последнее.

1
ответ дан 1 December 2019 в 21:39
поделиться