2017-03-15 22 views
14

Przeprowadziłem migrację xproj podstawowych projektów do csproj. Wszystko działa dobrze, ale nadal mam problemy z konfiguracją publikowania. Na podstawie dokumentacji: https://docs.microsoft.com/en-us/dotnet/articles/core/tools/project-json-to-csproj Powinienem być w stanie wykluczyć pliki podczas publikowania.Program Visual Studio 2017 wykluczenie rdzenia core csproj

Dodałem następujące wiersze do f

<None Include="*.json" CopyToPublishDirectory="Never" /> 
<None Include="wwwroot\**\*.map;wwwroot\**\*.less;*.pdb" CopyToPublishDirectory="Never" /> 
<None Include="wwwroot\**\*" CopyToPublishDirectory="PreserveNewest" /> 

Ale nadal *.map, .json i .less pliki są kopiowane do publikowania folderu. Próbowałem innej kolejności bez szczęścia.

Jak wykluczyć niektóre pliki z publikacji?

+0

Czy projekt rozpocząć z 'Project Sdk =" Microsoft.NET.Sdk.Web "'? – natemcmaster

Odpowiedz

21

Krótka odpowiedź: korzystać z następujących fragmentów zamiast:

<ItemGroup> 
    <Content Update="**\*.map;**\*.less;*.json" CopyToPublishDirectory="Never" /> 
</ItemGroup> 

Można też dodać te wzory do "DefaultItemExcludes" własności.

<PropertyGroup> 
    <DefaultItemExcludes>$(DefaultItemExcludes);**\*.map;**\*.less;*.json</DefaultItemExcludes> 
</PropertyGroup> 

Dłuższa odpowiedź:

Microsoft.NET.Sdk i Microsoft.NET.Sdk.Web obejmują ustawienia domyślne pozycji. Są to globusy dla elementów w folderze projektu, które zawsze powinny być kompilowane, osadzane, kopiowane na wyjście itp. Istnieje kilka ustawień, które kontrolują to, ale nie są dobrze udokumentowane.

Jeśli chcesz zmienić metadata value (takie jak ustawienia CopyToPublishDirectory) dla elementu już zawarte przez domyślny glob, trzeba użyć „Update” zamiast „Dołącz”.

Aby zobaczyć, co się dzieje pod maską, tutaj są domyślne ustawienia pozycja dla Microsoft.NET.Sdk i Microsoft.NET.Sdk.Web

https://github.com/dotnet/sdk/blob/dev15.1.x/src/Tasks/Microsoft.NET.Build.Tasks/build/Microsoft.NET.Sdk.DefaultItems.props#L19-L27

https://github.com/aspnet/websdk/blob/rel/vs2017rtw/src/Web/Microsoft.NET.Sdk.Web.ProjectSystem.Targets/netstandard1.0/Microsoft.NET.Sdk.Web.ProjectSystem.props#L25-L40

+0

Doskonała odpowiedź, ponieważ narzędzie 'dotnet migrate' niepoprawnie (lub celowo) konwertuje wykluczenia na elementy typu" Brak "zamiast" Treści ". Powinienem zauważyć, że dodanie do właściwości 'DefaultItemExcludes' spowoduje również wykluczenie elementów z eksploratora rozwiązań. Można znaleźć te pliki rekwizytów/celów zainstalowanych w folderze '% ProgramFiles (x86)% \ Microsoft Visual Studio \ 2017 \ \ MSBuild \ Sdks'. – Vertigo

+0

' $ (DefaultItemExcludes); ** \ *. Map; ** \ *. Js', aby wykluczyć pliki auto-gen -> podobne do 'settings.json' w kodzie VS' files.exclude ' – SliverNinja

+0

Czy w interfejsie użytkownika nie ma sposobu na jego ustawienie? Nie mogę opublikować pliku nlog.config – doker

Powiązane problemy