Разверните внешний файл в C # решение с помощью clickonce - PullRequest
4 голосов
/ 11 октября 2011

У меня проблема с Visual Studio Express 2010 c # edition. У меня есть проект, который ссылается на DLL. Эта DLL имеет внешний файл Excel, помеченный как Build Action = Content Копировать в выходной каталог = Копировать всегда

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

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

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

Ответы [ 5 ]

8 голосов
/ 11 октября 2011

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

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

4 голосов
/ 18 октября 2011

Вы говорите, что на файл 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.

0 голосов
/ 16 августа 2016

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

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

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

0 голосов
/ 11 октября 2011

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

0 голосов
/ 11 октября 2011

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

...