2016-12-08 1 views
0

J'essaie d'utiliser la publication Click-Once, le problème est, il est également la publication du fichier de configuration, qui a les chaînes de connexion que j'utilise sur mon ordinateur de développement, pas le bon ceux que j'utilise dans l'environnement de production. Comment puis-je empêcher la publication du fichier de configuration plus que la première fois? J'ai essayé dans les propriétés de ne pas l'inclure dans la liste de publication, mais il n'y a pas d'option pour le faire.Empêcher le fichier de configuration de publication avec le déploiement Click-Once

+0

Je ne suis pas l'auteur ni aucune affiliation avec le projet, mais il y a un plugin pour Visual Studio (gratuit comme dans la bière) qui applique les transformations app.config un peu comme le moteur de transformation web.config intégré. Il s'appelle SlowCheetah et vous permet d'avoir différents paramètres de configuration en fonction de votre profil de construction. https://marketplace.visualstudio.com/items?itemName=WillBuikMSFT.SlowCheetah-XMLTransformsm Signification, vous pouvez publier un fichier de configuration factice lorsque vous effectuez votre déploiement de version par exemple. – Tommy

Répondre

0

Les fichiers de configuration font partie de Deployment car ils stockent tous les paramètres nécessaires qui sont utilisés dans Addin. Si je comprends bien le problème, alors vous voulez utiliser un paramètre, disons HOSTURL=http://example.com quand Addin est en environnement de production et HOSTURL=http://localhost quand vous développez l'Addin et vous vous attendez à tout cela automatiquement sans intervention humaine.

Ensuite, vous pouvez essayer un de ces:

[1] Essayez trouver les paramètres ClickOnceLocation et d'utilisation en fonction de la valeur du ClickOnceLocation. En supposant que ClickOnceLocation contient "Debug" pendant le développement/le débogage de l'addin.

//CodeBase is the location of the ClickOnce deployment files 
Uri uriCodeBase = new Uri(assemblyInfo.CodeBase); 
string ClickOnceLocation = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString()); 
if(ClickOnceLocation.Contains("Debug")) 
{ 
    URL = "http://localhost";  
} 
else 
{ 
    URL = //from app.config 
} 

[2] Updating the app.config by using build configurations

Il y a quelques trucs que vous pouvez utiliser de sorte qu'un fichier différent avec les valeurs au serveur de production se ramassé lors de la publication.

Vous pouvez avoir deux fichiers de configuration distincts, l'un pour le déploiement/débogage local et l'autre pour une version réelle publiée ou de production de l'application. Le fichier de configuration de débogage pourrait pointer vers le serveur localhost alors que le vrai fichier de configuration publié pourrait pointer vers le vrai serveur. Vous pouvez ensuite configurer les configurations de construction de telle sorte que le fichier de configuration approprié soit récupéré en fonction de la configuration de construction active.

Pour ajouter deux fichiers app.config différents au projet, vous pouvez mettre à jour la référence à app.config dans votre fichier de projet. Le app.config est défini dans le fichier de projet (vbproj ou csproj) avec le code XML suivant:

<ItemGroup> 

… 

<None Include=”app.config” /> 

</ItemGroup> 

Il peut y avoir d'autres noeuds dans le ItemGroup ainsi que le noeud de app.config. Supprimer juste App.Config de ce noeud ItemGroup et créer un nouveau ItemGroup sous le nœud avec le code XML suivant:

<ItemGroup Condition=” ‘$(Configuration)|$(Platform)’ == ‘Debug|AnyCPU’ “> 
<None Include=”app.config” /> 
</ItemGroup> 

<ItemGroup Condition=” ‘$(Configuration)|$(Platform)’ == ‘Release|AnyCPU’ “> 
<None Include=”publishedapp.config” /> 
</ItemGroup> 

Cela signifie que le fichier app.config régulier sera utilisé lorsque la configuration active est réglée sur Le débogage et le fichier app.config modifié avec les variables de production réelles stockées dans le sous-dossier "published" du projet sont utilisés lorsque la configuration active est définie sur "Release".

Vous pouvez modifier les conditions du groupe d'éléments pour les faire correspondre aux autres configurations de construction que vous avez définies. Une possibilité est d'avoir une configuration "Publier" séparée, basée sur la configuration "Release", mais seulement utilisée lorsque vous allez réellement publier une application.

Un avertissement supplémentaire avec ce processus est que le système de projet VS lui-même et les concepteurs ne sont pas au courant du fichier app.config supplémentaire; Visual Studio est uniquement conscient du fichier d'origine. Le fichier app.config modifié avec des valeurs pour un environnement de production est uniquement utilisé par le processus msbuild. Ainsi, si vous mettez à jour le fichier app.config principal via le Concepteur de paramètres, le fichier app.config modifié ne sera pas mis à jour et vous devrez mettre à jour manuellement le fichier.Une fois que vous avez configuré votre projet de manière appropriée, vous pouvez simplement basculer entre les différentes configurations de construction pour modifier le fichier de configuration et publier l'application à partir de Visual Studio sans passer par le processus de mise à jour et de signature.

+0

Un grand merci à tous les répondeurs, je vais étudier les choses et les marquer d'une manière – burech