Niedawno przeniosłem się do Visual Studio 2017
Edycji Społeczności. Posiada 2 ładne nowe funkcjeJak dodać dodatkowe pliki do pakietu Nuget w Visual Studio 2017
- Nie trzeba jawnie zawierać pliki źródłowe w csproj, to robi to automatycznie,
- może budować bezpośrednio pakiety Nuget.
Chcę spakować moją bibliotekę Open Source CodeFirstWebFramework
jako pakiet nuget. Oprócz tego, że zawiera pakiet DLL
, pakiet musi zawierać całe drzewo katalogów innych plików (w tym pliki .js, .tmpl, .css i .md).
Jak mogę powiedzieć, że to drzewo katalogów jest zawarte w pakiecie?
Z informacji, które znalazłem z obszernym wyszukiwaniem i ignorowaniem wszystkich nieaktualnych informacji, które wymagają dodania plików do csproj, wszystko, co mogłem znaleźć, to umieszczenie ich w folderze contentFiles
, ale to nie wydaje się działać .
Mój plik projektu wygląda następująco:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net45</TargetFramework>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<Authors>Nikki Locke</Authors>
<Company>Trumphurst Ltd</Company>
<Description>Easy to use web server for building web apps that use sql databases generated from c# classes</Description>
<Copyright>2017 Trumphurst Ltd.</Copyright>
<PackageProjectUrl>https://github.com/nikkilocke/CodeFirstWebFramework</PackageProjectUrl>
<RepositoryUrl>https://github.com/nikkilocke/CodeFirstWebFramework</RepositoryUrl>
<RepositoryType>Github</RepositoryType>
<PackageTags>C# SQL Code First Web Server</PackageTags>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Markdig" Version="0.12.1" />
<PackageReference Include="Mono.Data.Sqlite.Portable" Version="1.0.3.5" />
<PackageReference Include="mustache-sharp" Version="0.2.10" />
<PackageReference Include="MySql.Data" Version="6.9.9" />
<PackageReference Include="Newtonsoft.Json" Version="10.0.2" />
</ItemGroup>
<ItemGroup>
<Reference Include="System.Net" />
<Reference Include="System.Web" />
</ItemGroup>
</Project>
Wildly zgadywania, co może muszę zrobić ze sprzecznych i out-of-aktualne informacje w sieci, dodałem następujące:
<ItemGroup>
<Content Include="contentFiles/**/*.*" copyToOutput="true">
<IncludeInPackage>true</IncludeInPackage>
</Content>
</ItemGroup>
teraz plik .nupkg
ma zawartość poufnych nim contentFiles
folderu (w dwóch miejscach, folder content
i folder contentFiles
.
Jednak po zainstalowaniu pakietu w innym projekcie pliki zawartości nie są wyświetlane, mimo że są wymienione w pliku project.assets.json
w folderze obj
.
* nie musisz jawnie dołączać plików źródłowych do csproj, robi to automatycznie i może budować pakiety nugetów bezpośrednio * - gdzie to przeczytałeś? Ten dokument (jest to przykład z rdzeniem .net, który nie jest pewny, czy kierujesz pełną ofertę) ma kilka kroków: https://docs.microsoft.com/en-us/nuget/guides/create-net-standard-packages-vs2017 dodałeś bibliotekę DLL, aby projektować i budować katalog wyjściowy, czy jest to odniesienie w csproj? –
np. http://www.natemcmaster.com/blog/2017/03/09/vs2015-to-vs2017-upgrade/ –
"czy dodałeś bibliotekę DLL do projektu i kompilacji katalogu wyjściowego, czy jest to odniesienie w csproj?" - nie rozumiem pytania. Co to jest dll? –