Cómo mantener separados los datos privados en una aplicación ASP.NET MVC de código abierto

En una aplicación de código abierto ASP.NET en la que estoy trabajando, necesito mantener ciertos datos en el file de configuration en privado, mientras sigo manteniendo la tarea fácil para que las personas construyan y depuren en su propia máquina. Estos son datos como keys de API, configuraciones de correo, etc.

¿Cómo mantendría estos datos por separado y fuera del repository de git al mismo time que permitiría que la gente simplemente tirara y construyera sin tener que configurar un montón de cosas?

En su file de configuration puede definir configSource:

<configuration> <appSettings configSource="filepath1.config" /> <connectionStrings configSource="filepath2.config" /> <!--etc--> </configuration> 

Ponga las configuraciones que necesita para mantener en privado en un file de configuration separado, luego excluirlos en su .gitignore.

Tenga en count que esto ignorará toda la sección y la sobrescribirá con el context que tenga en el file al que se hace reference.

También puede hacer Transformación de configuration , que le permite sobrescribir solo un pequeño set de variables en secciones. Por ejemplo:

En tu web.config principal:

 <configuration> <appSettings> <add key="Key1" value="Something I dont't Care"/> <add key="Key2" value="Something dummy"/> </appSettings> </configuration> 

Y en su Web.Release.config:

 <configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> <appSettings> <add key="Key2" value="Something I want to keep secret" xdt:Transform="SetAttributes" xdt:Locator="Match(key)" /> </appSettings> </configuration> 

En este caso, el valor "Key2" que desea mantener como privado se encontrará en un file separado, y puede excluir Web.Release.config a través de .gitignore.

También hay otro enfoque que nunca intenté, que también puede sobreescribir la configuration usando un file externo.