Я использую Visual Studio, чтобы сделать мой первый полный выпуск приложения, который представляет собой простой графический интерфейс WPF для настройки локально сохраненного объекта JSON и консольное приложение для запуска в фоновом режиме, используя данные этого объекта для мониторингасайт.Я опубликовал каждый проект в тестовой папке (скажем, «Опубликовать /»), где теперь находится каждый манифест приложения, а также в папке «Файлы приложения», содержащей другую подпапку для каждого проекта.
Я заставил приложения работать нормально - проблема в том, что файл конфигурации сохраняет в одну папку еще несколько уровней в C: \ Users \ username \ AppData \ Local \ Apps \ 2.0 \, и консольное приложениепопытка чтения из совершенно отдельной папки.Оба проекта пишут и читают, используя GetCurrentDirectory () для пути к файлу.Есть ли способ, которым я скучаю, чтобы исправить это?
Код для получения объекта JSON
try
{
//Confirms file exists
if (File.Exists(Directory.GetCurrentDirectory().ToString() + filePath))
{
//Initialize json variable to a string, then deserialize it into an instance of RCDetails
var json = File.ReadAllText(Directory.GetCurrentDirectory().ToString() + filePath);
RCDetails parsedDetails = JsonConvert.DeserializeObject<RCDetails>(json);
//Return deserialized JSON
return parsedDetails;
}
else return null;
И код для записи объекта JSON
public void WriteToFile(RCDetails rcd)
{
//Serialize input instance of RCDetails class
string JSONresult = JsonConvert.SerializeObject(rcd, Formatting.Indented);
//Remove old JSON object
if (File.Exists(Directory.GetCurrentDirectory().ToString() + jsonFilePath))
File.Delete(Directory.GetCurrentDirectory().ToString() + jsonFilePath);
//Create new JSON object with updated details
File.WriteAllText(Directory.GetCurrentDirectory().ToString() + jsonFilePath, JSONresult);
}
Точные шаги для публикации проекта:
- С выбранным консольным приложением нажмите Build> Publish (имя консольного приложения)
- Перейдите в C: \ Users \ имя пользователя \ Downloads \ Publish \
- Для установки выберите «С CD-ROM илиDVD-ROM "
- Выберите", приложение не будет проверять наличие обновлений
- Выберите «Завершить» и повторите все шаги с тем же путем к файлу для конфигурации WPF
Решение IЯ нашел (не стесняйтесь, дайте мне знать, если это плохой план). Я просто добавил это в оба приложения.
string s = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "\\IntendedFolder";
if (!Directory.Exists(s))
Directory.CreateDirectory(s);
Directory.SetCurrentDirectory(s);