2009-12-04 25 views
17

Cuando compila un proyecto C#, la configuración de la aplicación de app.config se guarda junto con el archivo exe. Por ejemplo, si el nombre del programa es "solve_np.exe", habrá un "solve_np.exe.config" al lado, haciendo que se vea menos limpio de lo que yo quisiera. ¿Cómo puedes incrustarlo en .exe?¿Cómo incrusta app.config en proyectos de C#?

Intenté establecer la acción de compilación para incrustar recursos, pero no funcionó.

Respuesta

10

Aha. Supongo que estás cometiendo problemas con Visual Studio que coloca automáticamente cosas en la configuración que NO deseas que el usuario final configure.

En este caso use los recursos. Simplemente agregue un nuevo archivo de tipo .resx. Con esto, podrá agregar cosas como cadenas e imágenes al archivo de recursos. Después de compilar esto, debe proporcionar acceso estático a los recursos (normalmente genera un archivo de código a partir de los recursos para que usted no tenga que acceder a ResourceManager).

E.G. Si hice resources.resx con una cadena denominada MyConfigValue después de una acumulación que debería ser capaz de acceder a este como:

textBox.Text = Resources.MyConfigValue; 

Si desea valores que son un poco variable, pero no debe ser configurable, entonces este es el lugar correcto para ponerlos.

HTH.

+0

Reformé la pregunta para no molestar a la gente. – Wamiduku

+0

No estoy molesto. Solo quiero saber por qué piensas que no es profesional. Esta es probablemente la clave de por qué las personas (yo incluido) están malinterpretando el razonamiento detrás de su pregunta. ¿Qué tipo de datos está almacenando dentro de su archivo "config"? – Quibblesome

+1

Algo así como "menos limpio cuando no hay necesidad de que el usuario cambie la configuración" es lo que debería haber escrito desde el principio, no "poco profesional". Mis disculpas por no estar clara. La información que termina en .config es VS generada. En general, aaronls describe exactamente lo que quería decir. – Wamiduku

0

Estoy de acuerdo con serhio darasd y Quibblesome pero puede simplemente eliminar "solve_np.exe.config" y solo usará las configuraciones predeterminadas.

6

No es unprofessional para tener un archivo app.config enviado junto con su exe. Creo que la palabra que puede buscar es desordenada. ¡Personalmente no encuentro que este sea el caso yo, sin embargo, todos son diferentes! ¿Quizás simplemente podría ocultar el archivo app.config por defecto?

O bien, otra alternativa es crear su propio archivo de configuración que puede guardar en la carpeta de datos de la aplicación o incluso almacenar la configuración en el registro en su lugar.

+0

+1 para dar registro como una opción que realmente responde la pregunta de OP (no es que me gustaría mucho esta opción). –

+3

Hay algunas cosas en .Net configuradas en la aplicación.config de forma predeterminada, pero no es necesario que el usuario la modifique. Cosas como Enterprise Library Clave y algoritmo de criptografía, por ejemplo. Sería bueno poder elegir integrarlo en tu archivo ejecutable, ya que es fácil para el usuario perder la aplicación. Configurar y romper el archivo ejecutable. –

2

Normalmente, la teoría de un archivo de configuración es que almacena configuraciones que puede querer cambiar una vez que haya implementado la aplicación (para algo así como las preferencias del usuario). Para hacer esto, debe almacenar en algún lugar externo a su aplicación. Si usa la configuración predeterminada, obtiene "[Your] .exe.config". Hay muchas otras opciones que podría considerar, pero casi todas terminan con un archivo escrito en alguna parte, si proporciona un mecanismo que guarda configuraciones de algún tipo.

4

Aquí hay otro factor a considerar. Los desarrolladores de .Net experimentados están acostumbrados al diseño de aplicaciones estándar, que incorpora el uso de archivos de configuración tanto en aplicaciones web como en aplicaciones de escritorio. Si se aparta de esa práctica, hará que sea más difícil para los desarrolladores que lo siguen entender lo que ha hecho. Incluso sa en el servidor web puede confundirse por la ausencia de un archivo de configuración.

Dado que casi todo el mundo lo hace de esta manera, su código no se ve "desordenado" para los demás. Por el contrario, sería una perplejidad no ver un archivo de configuración donde se espera uno.

0

Después de considerar lo que estaba escrito en estos comentarios y otras búsquedas, decidí que la mejor manera de manejar mi problema de querer que mi cadena Entity Framework esté integrada en mi ejecutable en lugar de necesitar MyApplication.exe.archivo de configuración con mi solución implementada fue creado para una clase derivada, como por ejemplo:

Public Class MyEFDataContainerLocal 
    Inherits MyEFDataContainer 

    Public Sub New() 
     MyBase.New(My.Settings.MyEFContainerConnectionString) 
    End Sub 
End Class 

acabo de crear un Entorno de aplicación de cuerdas tipo de conexión que contenía la misma cadena que lo que se encuentra en el archivo app.config. Solo tuve que reemplazar el &quote; con comillas reales.

Luego, cada vez que quería usar el MyEFDataContainer como en Dim db As New MyEFDataContainer, simplemente usaría Dim db As New MyEFDataContainerLocal.

Cuestiones relacionadas