2017-05-06 1 views
1

J'ai peu *.csproj (nouveau format) dans un dossier ("même" projet, différentes constructions - non, il ne fonctionne pas avec un seul) et je dois avoir app.config fichier avec bindingRedirect pour certains projets. Y at-il un moyen d'avoir des noms distincts app.config par projet comme c'était possible pour packages.config avec packages.<project name>.config? La seule solution, assez boiteuse, que je puisse envisager comme une solution de contournement consiste à avoir une tâche de pré-construction et de post-construction pour y mettre le fichier et l'enlever et s'assurer que deux versions fonctionnent ensemble.App.configs différents pour différents projets dans le même dossier

+0

Je ne suis pas sûr de ce que vous voulez dire exactement avec * ont des noms de app.config distincts * (fichiers différents peut-être?), Mais si vous définissez le '$ (AppConfig) 'la propriété utilisera cela comme nom de fichier au lieu du fichier app.config standard. Donc, vous pouvez, par exemple, définissez-le sur 'app. $ (MSBuildProjectName) .config'. Encore une fois, pas sûr à 100% si c'est ce que vous voulez? (Sidenote regearding le «même projet, différentes constructions»: il ya presque toujours un moyen de faire fonctionner cela, mais j'ai vu * beaucoup * cas où ce chemin n'a pas été trouvé juste en raison du manque de connaissances msbuild - ne pas dire que c'est le cas ici, mais juste FYI) – stijn

+0

Awesome. C'est exactement ce dont j'ai besoin. J'ai complètement manqué la propriété '$ (AppConfig)'. Si vous ajoutez ceci comme réponse, je l'accepterai immédiatement. –

Répondre

3

En regardant la sortie de construction, vous pouvez voir une cible nommée _CopyAppConfigFile qui prend soin de copier le fichier de configuration. En regardant plus loin dans Microsoft.Common.CurrentVersion.targets, on peut voir que msbuild utilise par défaut app.config, et cela peut être annulé en déclarant une propriété AppConfig. Donc, si vous souhaitez intégrer le nom du projet dans cette utilisation

<PropertyGroup> 
    <AppConfig>app.$(MSBuildProjectName).config</AppConfig> 
</PropertyGroup>