Re[4]: DLL-Связывание. Поиск DLL. Манифесты.
От: Аноним  
Дата: 06.10.09 20:33
Оценка:
Здравствуйте, Rakafon, Вы писали:

R>Здравствуйте, SchweinDeBurg, Вы писали:

SDB>>Формально, скорее всего, да (ИМХО). Но, с другой стороны, я не думаю, что авторы Howto: Deploy VC2008 apps without installing vcredist_x86.exe и Create projects easily with private MFC, ATL and CRT assemblies (последний вообще является MS MVP C++) кто-нибудь привлекал или собирается привлекать к какой-либо ответственности.

R>Ну эти товарищи, конечно, мне по жопе не постучат, если я сделаю из Microsoft.VC90.CRT приватную сборку. Но, например, имхо, зарегистрировать такой софт в Windows Vista Compatibility Center вряд ли получится ...

R>


Я никак не могу понять одного, зачем удалять атрибут publicKeyToken из манифеста. Ведь положив неизмененное содержимое Microsoft.VC90.CRT в папку со своим приложением, ничего не нарушается, и приложение работает.

Чтобы сборка была не приватной, ее нужно установить в WinSxS, и сделать это можно только с помощью Windows Installer. Если же сборка лежит вместе с приложением, то она является приватной, и совершенно не важно, есть в манифесте этой сборки publicKeyToken или нет его там. Отличие в том, что без него, сборка не может быть неприватной.


Чтобы расставить все точки над ı, давайте почитаем, что же говорит Microsoft об этом: Redistributing Visual C++ Files, а точнее How to: Deploy using XCopy. Часть Deploying Visual C++ library DLLs as private assemblies наиболее интересна:

  1. Create a folder structure on the development computer that matches the folder structure to be used on the target computer. For this example, create a \bin folder and copy myapplication.exe there. Then create a \bin\mylibrary folder and copy MyLibrary.dll there.

  2. On the development computer, from %PROGDIR%\Microsoft Visual Studio 8\VC\Redist\x86, copy Microsoft.VC80.CRT and Microsoft.VC80.MFC to \bin and to \bin\MyLibrary.

  3. Copy the \bin folder to the target computer. On a target computer with manifest-based binding support (Windows XP Home Edition, Windows XP Professional, Windows Server 2003, Windows Vista) no further preparation is necessary. On a computer without such support (Windows 98, Windows 98 Second Edition, Windows Millennium Edition, Windows 2000), Microsoft.VC80.CRT and Microsoft.VC80.MFC must be on the path.


Аналоги этих же статей для Visual Studio 2008:

И не нужно редактировать манифесты, удаляя publicKeyToken из них, — просто берем и используем.
sxs assembly manifest dll side-by-side
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.