.NET DLL версии и развертывание xcopy - PullRequest
2 голосов
/ 25 июня 2009

Я развертывал несколько программ в одной папке, используя развертывание XCOPY на общем сетевом диске, так как мне было очень легко обновлять его в домашних программах. У них есть общая DLL NNC.dll. Он не часто модифицируется, но в последнее время это происходит, поэтому, когда я перешел к развертыванию, я не смог перезаписать его, поскольку это серьезное изменение.

Если я изменю имя сборки в проекте NNC на NNC 1.1.dll, скопировав его в ту же папку в сети, то новые развернутые программы подберут новую DLL и старую NNC.DLL. В идеале это то, что я хотел бы, но я бы не хотел развертывать, а потом понимать, что старые программы собирают новейшую сборку версии, поскольку в ней есть серьезное изменение, которое я еще не исправил во всех проектах.

Сборка имеет строгое имя, и я обновил номер версии, чтобы он соответствовал.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Это сработало так, как я надеялся в моем вопросе.

1 голос
/ 25 июня 2009

Если у вас есть:

  • ClassLibrary, версия = 1.0.0.0, культура = нейтральная, PublicKeyToken = f31de59ccff6c2c9

  • ClassLibrary, версия = 2.0.0.0, культура = нейтральная, PublicKeyToken = f31de59ccff6c2c9

Решение без кода / конфигурации будет заключаться в следующем:

  1. Скопируйте 1.0.0.0 в новую папку с именем oldbin
  2. Заменить 1.0.0.0 на 2.0.0.0
  3. Для каждого старого приложения (под старым я имею в виду использование предыдущей версии разделяемой dll) добавьте (если он еще не существует) файл конфигурации AppName.exe.config со следующей записью:

    <configuration>  
    <runtime>  
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">  
    <dependentAssembly>  
    <assemblyIdentity name="ClassLibrary" publicKeyToken="f31de59ccff6c2c9" culture="neutral" />  
    <codeBase version="1.0.0.0" href="oldbin\ClassLibrary.dll"/>  
    </dependentAssembly>  
    </assemblyBinding>  
    </runtime>  
    </configuration>
    

Таким образом, новое приложение будет использовать новую сборку, а старые приложения получат старую сборку из папки oldbin.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...