Возникли проблемы при публикации пакета только с утилитами сборки. Чтобы быть точным: я следовал руководству nuget , какие файлы должны быть где. Поэтому я создал простой [проект] [2], в котором я просто хочу развернуть файлы .props
и .targets
в папке сборки для сторонних проектов. Когда я упаковываю его с dotnet pack Teronis.Packaging.ProjectBuildInPackage.csproj --configuration Release)
, файл .nupkg содержит все необходимые файлы:
Listing archive: bin\Release\Teronis.Packaging.ProjectBuildInPackage.1.0.0.nupkg
--
Path = bin\Release\Teronis.Packaging.ProjectBuildInPackage.1.0.0.nupkg
Type = zip
Physical Size = 3027
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2020-01-11 18:13:12 ..... 533 297 _rels\.rels
2020-01-11 18:13:12 ..... 696 358 Teronis.Packaging.ProjectBuildInPackage.nuspec
2020-01-11 17:03:22 ..... 435 208 build\Teronis.Packaging.ProjectBuildInPackage.props
2020-01-11 11:28:08 ..... 1188 532 build\Teronis.Packaging.ProjectBuildInPackage.targets
2020-01-11 18:13:12 ..... 534 219 [Content_Types].xml
2020-01-11 18:13:12 ..... 735 413 package\services\metadata\core-properties\3bab4543af344c95ae6210e86f61f55a.psmdcp
------------------- ----- ------------ ------------ ------------------------
2020-01-11 18:13:12 4121 2027 6 files
Когда я добавляю этот пакет (nuget add bin/Release/Teronis.Packaging.ProjectBuildInPackage.1.0.0.nupkg -Source "C:\Users\<user>\.nuget\packages"
) в свой локальный канал, после того как я, конечно, удалил его, и пусть пример проекта с настроенными источниками каналов включает указанный пакет c, сгенерированный obj/project.assets.json
не будет содержать файлы .props
и .targets
, которые он должен:
{
"version": 3,
"targets": {
".NETStandard,Version=v2.0": {
"Microsoft.NETCore.Platforms/1.1.0": {
...
},
"NETStandard.Library/2.0.3": {
...
},
// ###############################################
"Teronis.Packaging.ProjectBuildInPackage/1.0.0": {
"type": "package"
// Here should the .props and .targets files be referenced
},
"Test.Localization/1.0.0": {
...
}
}
},
"libraries": {
"Microsoft.NETCore.Platforms/1.1.0": {
...
},
"NETStandard.Library/2.0.3": {
...
},
// ###############################################
"Teronis.Packaging.ProjectBuildInPackage/1.0.0": {
"sha512": "vKfduDW8+hIYQ1s6zFO0EnCmJTSVGAzsvcDDM2YIEiIqksGX1WO/ERMvAkXmJR2Q0x92wFk+z0i448HuYmUWSQ==",
"type": "package",
"path": "teronis.packaging.projectbuildinpackage/1.0.0",
"files": [
".nupkg.metadata",
// Here are the .props and .targets files missing
"teronis.packaging.projectbuildinpackage.1.0.0.nupkg.sha512",
"teronis.packaging.projectbuildinpackage.nuspec"
]
},
"Test.Localization/1.0.0": {
"type": "project",
"path": "../../Teronis.DotNet/src/Packaging/ProjectBuildInPackage/test/Test.Localization/Test.Localization.csproj",
"msbuildProject": "../../Teronis.DotNet/src/Packaging/ProjectBuildInPackage/test/Test.Localization/Test.Localization.csproj"
}
},
"projectFileDependencyGroups": {
...
},
"packageFolders": {
"C:\\Users\\<user>\\.nuget\\packages\\": {},
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder": {}
},
"project": {
"version": "2.0.0",
"restore": {
"projectUniqueName": "C:\\Users\\<user>\\source\\repos\\Teronis.Packaging.ProjectBuildInPackage.Test\\Teronis.Packaging.ProjectBuildInPackage.Test\\Teronis.Packaging.ProjectBuildInPackage.Test.csproj",
"projectName": "Teronis.Packaging.ProjectBuildInPackage.Test",
"projectPath": "C:\\Users\\<user>\\source\\repos\\Teronis.Packaging.ProjectBuildInPackage.Test\\Teronis.Packaging.ProjectBuildInPackage.Test\\Teronis.Packaging.ProjectBuildInPackage.Test.csproj",
"packagesPath": "C:\\Users\\<user>\\.nuget\\packages\\",
"outputPath": "C:\\Users\\<user>\\source\\repos\\Teronis.Packaging.ProjectBuildInPackage.Test\\Teronis.Packaging.ProjectBuildInPackage.Test\\obj\\",
"projectStyle": "PackageReference",
"fallbackFolders": [
"C:\\Program Files\\dotnet\\sdk\\NuGetFallbackFolder"
],
"configFilePaths": [
"C:\\Users\\<user>\\source\\repos\\Teronis.Packaging.ProjectBuildInPackage.Test\\NuGet.Config",
"C:\\Users\\<user>\\AppData\\Roaming\\NuGet\\NuGet.Config",
"C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
],
"originalTargetFrameworks": [
"netstandard2.0"
],
"sources": {
"C:\\Users\\<user>\\.nuget\\packages": {},
"https://api.nuget.org/v3/index.json": {}
},
"frameworks": {
"netstandard2.0": {
"projectReferences": {
"C:\\Users\\<user>\\source\\repos\\Teronis.DotNet\\src\\Packaging\\ProjectBuildInPackage\\test\\Test.Localization\\Test.Localization.csproj": {
"projectPath": "C:\\Users\\<user>\\source\\repos\\Teronis.DotNet\\src\\Packaging\\ProjectBuildInPackage\\test\\Test.Localization\\Test.Localization.csproj"
}
}
}
},
"warningProperties": {
"warnAsError": [
"NU1605"
]
}
},
"frameworks": {
"netstandard2.0": {
"dependencies": {
"NETStandard.Library": {
"suppressParent": "All",
"target": "Package",
"version": "[2.0.3, )",
"autoReferenced": true
},
"Teronis.Packaging.ProjectBuildInPackage": {
"include": "Runtime, Build, Native, ContentFiles, Analyzers, BuildTransitive",
"suppressParent": "All",
"target": "Package",
"version": "[1.0.0, )"
}
},
"imports": [
"net461",
"net462",
"net47",
"net471",
"net472",
"net48"
],
"assetTargetFallback": true,
"warn": true,
"runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\3.1.100\\RuntimeIdentifierGraph.json"
}
}
}
}
Пакет в пример проекта упоминается как
<ItemGroup>
<PackageReference Include="Teronis.Packaging.ProjectBuildInPackage" Version="1.0.0">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
</ItemGroup>
, поэтому он должен включать ресурсы сборки. Я думаю, что это как-то связано с поддерживаемыми фреймворками, так как этот пакет должен поддерживаться для каждого фреймворка / "фреймворка", такого как netcore
, netcoreapp
, net
, netstandard
и т. Д.
Следует сказать, что при создании пакета анализатор nuget жалуется на
1>------ Build started: Project: Teronis.Packaging.ProjectBuildInPackage, Configuration: Release Any CPU ------
1>Teronis.Packaging.ProjectBuildInPackage -> C:\Users\<user>\source\repos\Teronis.Packaging.ProjectBuildInPackage\Teronis.Packaging.ProjectBuildInPackage\bin\Release\netstandard2.0\Teronis.Packaging.ProjectBuildInPackage.dll
1>Successfully created package 'C:\Users\<user>\source\repos\Teronis.Packaging.ProjectBuildInPackage\Teronis.Packaging.ProjectBuildInPackage\bin\Release\Teronis.Packaging.ProjectBuildInPackage.1.0.0.nupkg'.
1>C:\Program Files\dotnet\sdk\3.1.100\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(198,5): warning NU5128: Some target frameworks declared in the dependencies group of the nuspec and the lib/ref folder do not have exact matches in the other location. Consult the list of actions below:
1>C:\Program Files\dotnet\sdk\3.1.100\Sdks\NuGet.Build.Tasks.Pack\build\NuGet.Build.Tasks.Pack.targets(198,5): warning NU5128: - Add lib or ref assemblies for the netstandard2.0 target framework
1>Done building project "Teronis.Packaging.ProjectBuildInPackage.csproj".
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
Даже когда я знаю, как это исправить, просто создав lib/netstandard2.0/_._
, это не решает мою проблему, что * Файлы 1029 * и .targets
не используются целевым объектом nuget, который промежуточно создает obj/project.assets.json
.