2012-08-08 10 views
13

Estoy en el proceso de centralizar la configuración de mi aplicación en una ubicación y he elegido usar la colección Settings en mi biblioteca común para hacerlo.Cómo hacer que Application.Properties.Settings sea público y seguir así

he movido todos estos archivos a su propio archivo que consigue tirado en mi app.config uso de una fuente de configuración:

<Common.Properties.Settings configSource="config\Common.Properties.Settings.config" /> 

Esto me permite utilizar la capacidad de "Añadir enlace" de Visual Studio para anular el configuración predeterminada de la biblioteca con el archivo de configuración importado dentro de mi web y aplicaciones de prueba.

Ahora, yo quiero ser capaz de acceder a todos estos grandes valores de configuración desde dentro de mis otras bibliotecas, y han descubierto que puedo hacerlo simplemente haciendo que el público clase generada:

archivos: Common.Properties .settings

public sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 

Esto le permite a conseguir acceso a cosas como Common.Properties.Settings.Default.MySetting de dentro de mi aplicación web o pruebas unitarias. Sin embargo, el problema es que cada vez que se añada un nuevo ajuste, el archivo Setting.settings se regenera por Visual Studio y voltea la clase configuración interna de nuevo a:

internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase 

Así que mi pregunta es si alguien sabe de una manera para anular esto, o tal vez sugerir un enfoque macro o algún otro método para asegurar que después de que se reconstruya el archivo Settings.settings, esta clase se configure como pública.

Gracias!

+0

Tome un vistazo a este enlace puede que esto puede ayudar a http://msdn.microsoft.com/en-us/library/aa730869%28v=vs.80%29.aspx – MethodMan

Respuesta

36

Supongo que ha creado y modificado las configuraciones de visual studio build en el editor que se puede acceder a través de la configuración de la sección de propiedades del proyecto. En el mismo editor hay un cuadro combinado que debe cambiar de interno a público y está marcado como Modificador de acceso.

enter image description here

+0

fantástico! Muchas gracias. – Shane

+6

Ugh, ¿por qué tuve que buscar esto en Google para encontrarlo? Ni siquiera noté esa barra y seguí buscando en la ventana de propiedades. – bojingo

+0

¿hay alguna manera secreta de eliminar la directiva 'sealed' para que pueda usarla para pruebas unitarias (o al menos crear un objeto a partir de un archivo específico que no sea el predeterminado)? –

Cuestiones relacionadas