publi sh проект C# с файлом конфигурации - PullRequest
0 голосов
/ 06 февраля 2020

Я хочу опубликовать sh проект C#, Visual Studio 2019, WPF.

Во-первых, публикация приложения; Во-вторых, установите приложение; В-третьих, после завершения установки приложения появляется окно с сообщением об ошибке: «Произошла ошибка при загрузке файла конфигурации»

Я хочу поместить файл конфигурации в приложение publi sh.

[Код в Visual Studio 2019 WPF] [2]

(MainWindow.cs)

private void MainWindow_OnContentRendered (отправитель объекта, EventArgs e) {// загрузка файла конфигурации попытка { Config = RimageConfig.LoadFromFile ("config. json"); } catch {ShowError ** ("Произошла ошибка при загрузке файла конфигурации", Close); ** return; }

(config. json) {"Rk": 0,3167, // "Rb": -1,6349, "Rg": 8,6982, "Rt ": 200, //" CLeft ": 655, // 655" CLeft ": 520, // 655" CTop ": 120," CWidth ": 2350," CHeight ": 2300," Pa ": 100," Pb ": 30, //" Па ": 255, //" Pb ": 0,}

Ответы [ 2 ]

1 голос
/ 06 февраля 2020

Попробуйте установить свойство «Копировать в выходной каталог» в «Копировать всегда» или «Копировать, если новее». Для этого в Visual Studio 2019:

  • Go в обозревателе решений
  • Перейдите в файл конфигурации
  • Щелкните правой кнопкой мыши по нему
  • Свойства
  • Выберите нужное значение «Копировать в выходной каталог»

Это должно гарантировать, что при использовании метода Publi sh настройки будут скопированы в каталог публикации.

РЕДАКТИРОВАТЬ: Как указал Корентин, в своем первоначальном ответе я упустил тот факт, что вы используете ClickOnce. В этом случае вам нужно go для свойств файла и установить "Build Action" на Content. Затем с go по Project -> Properties -> Publish, нажмите Application Files... и убедитесь, что для Publi sh Status и Download Group для вас установлены значения Include и (Required) соответственно.

0 голосов
/ 06 февраля 2020

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

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

Если вам нужен только файл конфигурации stati c, вы можете изменить файл конфигурации «Build Action» на «Embedded Resource» и загрузить его, используя Assembly.GetExecutingAssembly().GetManifestResourceStream() метод. Это означало бы, что они больше не будут редактироваться после сборки.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...