Разверните внешний файл в 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 в списке файлов со статусом публикации указан как "Включить".
Попробуйте включить этот файл в решение и установите для параметра "Копировать в выходной каталог" значение "Копировать всегда".