Разверните внешний файл в C# решение с помощью clickonce

У меня проблема с Visual Studio Express 2010 C# edition. У меня есть проект, который ссылается на DLL. Эта DLL имеет внешний файл Excel, помеченный как Build Action = Content Copy to Output Directory = Copy Always.

Когда я создаю решение, этот файл Excel правильно копируется в папку решения BIN\release.

НО, если я попытаюсь развернуть то же решение с помощью мастера публикации, файл Excel не будет скопирован в каталог установки.

Пожалуйста, кто-нибудь может мне помочь?

5 ответов

Решение

Вы говорите, что на файл Excel ссылаются только те DLL, которые вы включили в свой проект? Это вторичная ссылка, и ClickOnce не увидит ее и автоматически включит файл.

Во-первых, на вашей dll, я предполагаю, что на него ссылается непосредственно ваш проект. Если это так, то убедитесь, что вы добавили его в свой проект и установите для параметра "Действие сборки" значение "none", а для "copy to output directory" - "not copy". Затем удалите ссылку на нее и добавьте ее снова, указав версию, которая теперь включена в ваш проект. Установите для свойства "copy local" значение "true". Это обеспечит правильное развертывание самой DLL.

Для файла Excel вам нужно будет добавить его в свой проект. Установите действие сборки "content" и установите "copy to output directory" как "copy Always". Он не будет включен автоматически, потому что это вторичная ссылка на приложение ClickOnce, а не прямая / первичная ссылка, как в dll.

Откройте свойства публикации для вашего проекта ClickOnce. Затем нажмите кнопку "Файлы приложения...". Откроется диалоговое окно, в котором вы можете указать, какие файлы включаются в пакет публикации.

Чтобы файл XLSX (или любой другой файл, не являющийся сборкой) отображался в этом диалоговом окне, необходимо пометить его как "Содержимое" в действии "Построение" окна свойств.

Вы можете избежать этой проблемы, вставив файл Excel в качестве ресурса, а затем записав его так:

File.WriteAllBytes(DestinationFileName, Properties.Resources.MyResourceFile);

Я делаю предположение, что файл Excel является неким шаблоном, из которого вы используете файл вывода.

Похоже, что ваш файл не указан в списке "PublishFiles". Откройте Свойства проекта, перейдите на вкладку "Публикация", нажмите кнопку "Файлы приложения", убедитесь, что файл DLL в списке файлов со статусом публикации указан как "Включить".

Попробуйте включить этот файл в решение и установите для параметра "Копировать в выходной каталог" значение "Копировать всегда".

Другие вопросы по тегам