2017-09-27 3 views
0

Je viens de mettre à jour à Visual Studio 2017 v15.3 et Core 2.0 SDK.Visual Studio 2017 v15.3 ne copie pas nlog.config

Je travaille avec Igans Sakalauskas' Net Core Knockout project, il a été construit avec Core 1.1 dans VS 2017.

https://ignas.me/tech/net-core-knockoutjs-web-application/

J'ai laissé EnableDefaultContentItems à la valeur par défaut vrai et supprimé les Content Include déclarations du .csproj fichier dans le projet WebApplication1.Web. Il utilise nlog et il y a un nlog.config à la racine du projet. Le projet se construit avec succès mais lance un file not found error lorsqu'il est exécuté. Il cherche le nlog.config dans le dossier WebApplication1.Web\bin\Debug\netcoreapp1.1. Si je copie manuellement le fichier, le projet s'exécute et tous les tests passent. Ce que je n'arrive pas à faire, c'est que VS puisse copier le nlog.config lors de la construction du projet.

Si j'ajoute

<ItemGroup> 
    <Content Include="nlog.*" /> 
    </ItemGroup> 

au .csproj je reçois l'erreur Duplicate 'Content' items ... The duplicate items were: 'nlog.config'. https://aka.ms/sdkimplicititems

Si je commente le Contnet Include et définissez le EnableDefaultContentItems false

<PropertyGroup> 
    <EnableDefaultCompileItems>false</EnableDefaultCompileItems> 
</PropertyGroup> 

Je reçois un Suppression State Error CS5001 Program does not contain a static 'Main' method suitable for an entry point

Si je reconstitue alors les instructions `contenu inculde » il donne cette erreur:

Duplicate 'Content' items ... The duplicate items were: 'list of files' erreur

Le Default Content Items fonctionne avec les fichiers .js et .cs dans les sous-dossiers wwwroot.

Si VS jette l'erreur Duplicate Content quand je Content Include un article pourquoi il ne pas copier le fichier sans le Content Include?

Dans VS 2017 15.3 comment configurer la copie d'un fichier nlog.config depuis la racine du projet vers un sous-répertoire bin?

Répondre

2

Cela n'a rien à voir avec les éléments de contenu en double.

Rétablit le recommended approach to handling duplicate content errors dans Visual Studio 2017; c'est ce que vous avez commencé avec:

I've left EnableDefaultContentItems to the default of true and removed the Content Include statements from the .csproj file in the WebApplication1.Web project.

Maintenant ajoutez ceci à votre fichier .csproj:

<ItemGroup> 
    <Content Update="nlog.config"> 
    <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
    </Content> 
</ItemGroup> 

Ceci indique Visual Studio de mettre à jour la règle de contenu existant (généré automatiquement un) pour le faire copier le fichier dans le répertoire de sortie lors de la construction.

+0

Bonjour Daniel.J'étais sur le point de poster ma réponse qui devait mettre en surbrillance dans VS 'nlog.config' et changer le statut' Copy to Output Directory' dans Propriétés qui écrit votre réponse à '.csproj'. Mais vous me battez pour que vous obteniez le vote. Ne répond toujours pas à la question secondaire de savoir pourquoi la définition de 'EnableDefaultContentItems' sur false ne fonctionne pas. Avez-vous une idée à ce sujet? S'il vous plaît faites le moi savoir afin que je sache poser une question séparée si vous ne savez pas. – Joe

+0

@Joe Les problèmes les plus probables sont: 'EnableDefaultCompileItems' n'est pas au bon endroit et n'est pas appliqué ou il y a un problème avec le contenu inclus. Il est plus facile d'éviter tout le problème en supprimant le contenu et en supprimant 'EnableDefaultCompileItems', cela a bien fonctionné pour moi et je n'ai pas trouvé de besoin de' EnableDefaultCompileItems'. –