Развертывание ClickOnce, но указанный файл DLL не развертывается - PullRequest
1 голос
/ 13 июля 2010

У меня проблема с развертыванием приложения ClickOnce . Я использую Visual Studio 2008 . У меня есть указанный DLL-файл, который не развертывается.

В свойствах проекта -> Опубликовать вкладку -> Файлы приложений

Указанный DLL-файл не отображается, поэтому я не могу его добавить.

Файл DLL не используется непосредственно в моем коде, однако он используется другим файлом DLL, на который я ссылаюсь.

Можно ли как-нибудь вручную отредактировать что-нибудь, чтобы убедиться, что файл DLL скопирован?

Возможно, стоит упомянуть, что DLL-файл является сторонним DLL-файлом из DevExpress : DevExpress.XtraPrinting.dll. Я думаю, что он может быть загружен в качестве плагина одним из других DLL-файлов DevExpress.

Ответы [ 3 ]

3 голосов
/ 13 июля 2010

Я достаточно хорошо знаю эту проблему, и есть несколько способов ее исправить:

  1. Добавьте ссылку на DLL-файл DevExpress.XtraPrinting.dll в ваш проект.
  2. В разделе ссылок установите DevExpress.XtraPrinting.dll на Copy Local = true (похоже, это поможет VS запомнить dll больше)
  3. Чтобы заставить VS знать, что вам нужна эта dll, вам потребуетсяиспользуй это.Это может быть сделано путем создания экземпляра ExportOptions или какого-либо подобного объекта.например,

    var options = new ExportOptions ();options.Html.Title = "некоторый текст";

  4. Теперь убедитесь, что принудительно установите статус публикации "Включить" в разделе ApplicationFiles на вкладке "Публикация".

Это должно решить вашу проблему.

0 голосов
/ 14 июля 2010

Спасибо за ответы - однако я обнаружил, что ручное редактирование файла csproj работает для меня. Для тех, кто сталкивается с этой проблемой, вам может понадобиться добавить свою dll, которую вы хотите развернуть, следующим образом:

<PublishFile Include="DevExpress.XtraPrinting.v9.3">
  <Visible>False</Visible>
  <Group>
  </Group>
  <TargetPath>
  </TargetPath>
  <PublishState>Include</PublishState>
  <IncludeHash>True</IncludeHash>
  <FileType>Assembly</FileType>
</PublishFile>

Также убедитесь, что у вас есть это в разделе ссылок:

<Reference Include="DevExpress.XtraPrinting.v9.3, Version=9.3.3.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
  <SpecificVersion>False</SpecificVersion>
  <HintPath>..\SomePath\DevExpress.XtraPrinting.v9.3.dll</HintPath>
</Reference>

Я также хотел бы отметить, что решение RobinDotNet также работает.

0 голосов
/ 14 июля 2010

Добавьте сторонний файл DLL в ваш проект (щелкните правой кнопкой мыши по проекту, добавьте существующий элемент ...).Установите «Создать действие» на «Нет» и установите «Копировать в выходной каталог» на «Не копировать».

Удалите ссылку на этот файл DLL.Повторно добавьте ссылку и перейдите к этому файлу DLL в вашего проекта и выберите его.

Для ссылки установите для параметра «Копировать локальный» значение «True».* Теперь он должен отображаться в файлах приложения, потому что ваш код ссылается на локальную копию, и он настроен для ее развертывания.

Обратите внимание, что это работает не для всех сборок;некоторые просто ДОЛЖНЫ быть установлены в GAC .Но это можно попробовать бесплатно.Если он должен быть в GAC, он сообщит вам, когда вы попытаетесь установить его.

...