Файлы данных не развернуты с приложением ClickOnce

У меня есть приложение WinForms, которое я развертываю с помощью ClickOnce. В проекте приложения у меня есть файлы, помеченные как Content, которые также помечены как «Data File» в диалоговом окне Application Files в настройках публикации. У меня также есть некоторые файлы содержимого, которые помечены как «Включить авто».

Когда я публикую, устанавливаю приложение, а затем выполняю, оно сразу вылетает при запуске с DirectoryNotFoundException (полная трассировка стека ниже).

Заглянув в папку приложения, я могу найти все файлы с пометкой «Включить авто», аккуратно размещенные вместе с исполняемыми файлами. Файлы, помеченные как «Файл данных», не установлены (я проверил и исполняемые папки, и папку данных).

Обратите внимание, что публикация и установка выполняются из папки на моем локальном компьютере, а не через веб-сайт.

Если я перейду с «Файл данных» на стандартное включение во все файлы содержимого, все будет работать как шарм.

Я использую (ах) Windows XP SP3 и .Net 3.5 SP1.

System.IO.DirectoryNotFoundException был необработан. Сообщение = "Система не может найти указанный путь. (Исключение из HRESULT: 0x80070003)" Source = "mscorlib" StackTrace: в System.Deployment.Internal.Isolation.IActContext.SetApplicationRunningState (UInt32 dwFlags, UInt32 dwFlags, UInt32 dwFlags, UInt32 ulState, UInt32 & ulDisposition) в System.ActivationContext.SetApplicationState (ApplicationState s) в System.AppDomain.SetupDomainForApplication (ActivationContext ActivationContext, String [] ActivationData) в System.AppDomain.SetupApplicationHelper (предоставлено доказательство, ActivationContext, ActivationIcurityInfodentityInfodentity, создатели приложения [] ActivationData) в System.AppDomain.SetDomainManager (предоставлены доказательства SecurityInfo, создатели доказательствSecurityInfo,IntPtr parentSecurityDescriptor, Boolean publishAppDomain) в System.AppDomain.SetDefaultDomainManager (String fullName, String [] manifestPaths, String [] activateData) InnerException:

Ответов (1)

Решение

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

Проблема, похоже, также связана с тем, что в некоторых из этих подпапок у меня были файлы, помеченные как Include, а некоторые как Data. Это, вероятно, вызывает некоторую путаницу во время развертывания, когда файлы данных не развертываются.

Наконец, что мне нужно было сделать, чтобы все получилось так, как я хотел, так это удалить любую предыдущую версию приложения. Затем организуем мои файлы данных в проекте следующим образом:

\ Testfiles \ Filegroup1 \ data1.txt
\ Testfiles \ Filegroup1 \ data2.txt
\ Testfiles \ Filegroup2 \ moredata1.txt
\ Testfiles \ Filegroup2 \ moredata2.txt

Затем я помечаю все файлы в каждой папке как данные. Теперь все развертывается красиво и изящно, и загрузчик не падает при запуске.