Próbuję odwołać się do niektórych typowych ustawień konfiguracji między usługą systemu Windows i witryną MVC środowiska ASP.NET. Robię to za pomocą atrybutu pliku w ustawieniach aplikacji w App.config lub Web.config (odpowiednio). Plik (o nazwie common.config), do którego się odwołuje, jest połączonym plikiem w oddzielnym projekcie w tym samym rozwiązaniu. Ten common.config jest ustawiony na Content z Kopiować zawsze w zarówno projektów.Ustawienia aplikacji w aplikacji lub konfiguracji sieci Web przy użyciu połączonego pliku
This stack answer to a similiar question wydaje się sugerować przynajmniej dla configSource, że to rozwiązanie będzie działać. Nie chcę, aby configSource, ponieważ chcę tylko garść właściwości są wspólne wśród dwóch projektów. Aktualizacja: Po prostu próbowałem tego, a configSource również nie działa. Nie może znaleźć pliku konfiguracyjnego. To prowadzi mnie do przekonania, że plik common.config nie jest zawsze traktowany jako treść z kopią.
Przykład App.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<appSettings file="common.config">
<add key="NotCommonKey" value="1"/>
</appSettings>
</configuration>
Przykład Web.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings file="common.config">
<add key="NotCommonKey2" value="2" />
</appSettings>
</configuration>
Przykład common.config (Content -> kopiowania zawsze)
<appSettings>
<add key="CommonKey" value="1" />
</appSettings>
Używam/WebConfigurationManager odczyt z właściwości AppSettings.
Wszelkie pomysły, dlaczego gdy plik common.config jest połączonym plikiem, jego wartości AppSettings nie są używane, a gdy nie jest połączone, działa tak jak zwykle?
Dzięki!
1. Czy jesteś pewien, że plik common.config znajduje się w tym samym folderze co inne pliki konfiguracyjne? 2. Wszelkie zmiany w pliku common.config nie będą widoczne w aplikacji, dopóki nie zostanie uruchomiony ponownie. –
1. Właściwie to myślę. Myślę, że z jakiegoś powodu, gdy uruchamiam debugowanie, nie kopiuję połączonego pliku common.config do folderu aplikacji internetowej/aplikacji konsoli, nawet jeśli jest on ustawiony na kopiowanie pliku. – scottheckel
Zauważyłem, że jeśli utworzę aplikację konsolową, która używa połączonego pliku konfiguracyjnego, który znajduje się w innym projekcie, to działa. Musi to być specyficzne dla plików web.config. Stworzyłem problem na CodePlex https://aspnet.codeplex.com/workitem/10351 – scottheckel