Estoy leyendo artículos, publicaciones en el foro sobre la configuración de la aplicación desde hace casi una semana.Cómo fusionar la aplicaciónConfiguración de una biblioteca de clase en el archivo de configuración del ejecutable del host
En casi todos los hilos que había alguien que parece tener correctamente señalado que las bibliotecas de clases no pueden tener los archivos de configuración cuando se implementen y sus applicationSettings configuran en el diseño se debe especificar/fusionado en el fichero de configuración exe.config ejecutable de la aplicación que aloja/consume el dll.
No necesariamente cierto.
Puede, pero no es necesario fusionarlos, la configuración de la biblioteca de clases a menos que desee proporcionar al usuario una forma de "sobrescribir" los valores predeterminados, los que se especifican utilizando DefaultValueAttribute codificada en el ensamblaje.
Por lo tanto, para un ejemplo muy simple y práctico. Usemos VB.NET 1. Creé un proyecto de biblioteca de clase llamado ClassLibrary. 2. Mostrando todos los archivos, expanda MyProject, haga doble clic en Settings.settings. 3. Agregando una configuración llamada Mensaje, la aplicación cuyo valor es "¡Hola!". 4. Crear una propiedad en Class1.vb (la clase añadida automáticamente)
Public Class Class1
Public Shared ReadOnly Property Message As String
Get
Return My.Settings.Message
End Get
End Property
End Class
- Crear un proyecto de VB WinForms y lo llaman WinForm.
- Agregue una referencia al proyecto ClassLibrary.
Agregue un botón al Form1 ya creado y haga doble clic en él. 8 Agregue el código al controlador Button1_Click. Debería verse así
Public Class Form1
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click MessageBox.Show(ClassLibrary.Class1.Message) End Sub
End Class
Tienes WinForm "Establecer como proyecto de inicio"
Ahora, mientras que en el IDE todo funciona de maravilla. Ejecute la solución y obtendrá el esperado ¡Hola! cuando presionas el botón. Si vas y cambias la configuración en la aplicación.config de la biblioteca para decir "¡Adiós!" y ejecutas la solución nuevamente obtienes un "¡Adiós!"
Sin embargo, haga clic derecho en el proyecto de WinForm y "Abrir en el Explorador" y vaya a la carpeta de depuración. Aún no hay un archivo WinForm.exe.config. Vamos a crear uno rápidamente. Vuelva a cambiar a VS y mientras el proyecto WinForm está seleccionado, haga clic en Mostrar todos los archivos. Expanda MyProject, abra Ajustes de configuración, cree una configuración (no importa qué) y guárdela. Ahí vamos, se creó un App.config y si construyo esta solución, la carpeta Debug contendrá un WinForm.exe.config.
Dime cómo puedo combinar mi opción de la configuración de biblioteca de clases
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="ClassLibrary.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<applicationSettings>
<ClassLibrary.My.MySettings>
<setting name="Message" serializeAs="String">
<value>Hello!</value>
</setting>
</ClassLibrary.My.MySettings>
</applicationSettings>
</configuration>
mensaje en config del WinForm
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="WinForm.My.MySettings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client" />
</startup>
<applicationSettings>
<WinForm.My.MySettings>
<!--<setting name="A" serializeAs="String">
<value>A</value>
</setting>-->
</WinForm.My.MySettings>
</applicationSettings>
</configuration>
para que pueda cambiar de valor de ajuste en el WinForm el mensaje.exe.config a otra cosa y la aplicación mostrará este nuevo valor anulando DefaultValueAttribute.
La publicación de blog vinculada tiene dos métodos, el segundo de los cuales funcionó para mí. En caso de que el enlace muera, solo busque "applicationSettings configSource" para encontrar la información relevante. – HotN