@anelegalniy

Как корректно настроить app.config в VisualStudio при использовании GIT?

Есть проект WPF, десктопное приложение.
В нём в 3 файлам прописаны локальные пути к серверам/файлам, на каждой машине программистов они разные:
BuildTestingProject\app.config
содержание файла
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="BuildTestingProject.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <BuildTestingProject.Properties.Settings>
            <setting name="Path1" serializeAs="String">
                <value>Тестовый путь к локальному файлу при разработке</value>
            </setting>
            <setting name="Server1" serializeAs="String">
                <value>Путь к локальному серверу при разработке</value>
            </setting>
        </BuildTestingProject.Properties.Settings>
    </userSettings>
</configuration>

BuildTestingProject\Properties\Settings.settings
содержание файла
<?xml version='1.0' encoding='utf-8'?>
<SettingsFile xmlns="http://schemas.microsoft.com/VisualStudio/2004/01/settings" CurrentProfile="(Default)" GeneratedClassNamespace="BuildTestingProject.Properties" GeneratedClassName="Settings">
  <Profiles />
  <Settings>
    <Setting Name="Path1" Type="System.String" Scope="User">
      <Value Profile="(Default)">Тестовый путь к локальному файлу при разработке</Value>
    </Setting>
    <Setting Name="Server1" Type="System.String" Scope="User">
      <Value Profile="(Default)">Путь к локальному серверу при разработке</Value>
    </Setting>
  </Settings>
</SettingsFile>

BuildTestingProject\Properties\Settings.Designer.cs
содержание файла
//------------------------------------------------------------------------------
// <auto-generated>
//     This code was generated by a tool.
//     Runtime Version:4.0.30319.42000
//
//     Changes to this file may cause incorrect behavior and will be lost if
//     the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------

namespace BuildTestingProject.Properties {
    
    
    [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
    [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "14.0.0.0")]
    internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
        
        private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
        
        public static Settings Default {
            get {
                return defaultInstance;
            }
        }
        
        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("Тестовый путь к локальному файлу при разработке")]
        public string Path1 {
            get {
                return ((string)(this["Path1"]));
            }
            set {
                this["Path1"] = value;
            }
        }
        
        [global::System.Configuration.UserScopedSettingAttribute()]
        [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
        [global::System.Configuration.DefaultSettingValueAttribute("Путь к локальному серверу при разработке")]
        public string Server1 {
            get {
                return ((string)(this["Server1"]));
            }
            set {
                this["Server1"] = value;
            }
        }
    }
}


Как конкретно настроить GIT чтобы пути не перезаменялить при каждом коммите любого из программистов?
  • Вопрос задан
  • 355 просмотров
Пригласить эксперта
Ответы на вопрос 2
@SZolotov
Asp.net core, MAUI,WPF,Qt, Avalonia
Это вопрос больше организационный.
Предполагаемые пути решения:
1. Раздать программистам по шапке, т.к. отказываются включать голову.
2. Сделать единый настраиваемый конфиг
2.1 Сделать тестовый удалённый сервер, на который смотрит конфиг.
3. Локально у себя на компе разработчик вправе делать все что угодно, при условии что это не попадает в репозиторий и не вредит окружающим
4. За бардак в коде, внесение путаницы, отказ включать голову - анальные кары и массовые расстрелы.
Ответ написан
Как вариант: ту часть конфига, в которой прописываются всякие path, вынести в отдельный файл. А в основном конфиге просто использовать линк на этот файл. После этого нужно, чтобы каждый из разработчиков исключил этот файл (предположим paths.config) из обновления гита командой git update-index --skip-worktree paths.config. Теперь этот файл можно менять локально и его изменения трекаться не будут.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы