Я использую проекты Sdk для .NET Framework 4.7.2.Структура проекта:
SmokeTests
|
+--UITests
| |
| +--Common
|
+ NonUITests
|
+--Common
, где:
- проект SmokeTests ссылается как на UITests, так и на NonUITests, используя ProjectReferences
- UITests и NonUITests ссылаются на Common, используя ProjectReference
- UITests, NonUITests и Common ссылаются на некоторые пакеты NuGet с использованием PackageReferences
- проект SmokeTests не имеет исходного кода, но имеет некоторые файлы содержимого.
Я используюпроект SmokeTests как свернутый проект.Когда я его собираю, его каталог bin \ debug \ net472 содержит все двоичные файлы и символы, которые я хочу иметь в пакете nuget, а именно:
- NuGet-зависимости UITests, NonUITests и Common
- Библиотеки UITests, NonUITests и Common
- PDB
SmokeTests csproj выглядит так:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net472</TargetFramework>
<PackageId>SmokeTests</PackageId>
<NoPackageAnalysis>true</NoPackageAnalysis>
<IncludeBuildOutput>true</IncludeBuildOutput>
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<ContentTargetFolders>content</ContentTargetFolders>
</PropertyGroup>
<ItemGroup>
<Content Include="**\*.ps1" Exclude="PSTests\run.ps1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NonUITests\NonUITests.csproj" />
<ProjectReference Include="..\UITests\UITests.csproj" />
</ItemGroup>
</Project>
У меня также есть каталог.Файл Build.props:
<Project>
<PropertyGroup>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
<AllowedReferenceRelatedFileExtensions>.pdb</AllowedReferenceRelatedFileExtensions>
<Version>$([System.Text.RegularExpressions.Regex]::Match($(BuildName), `\d+\.\d+(?:.\d+)?(?:.\d+)?`))</Version>
<Version Condition="'$(Version)' == ''">1.0.0.0</Version>
<SourceRevisionId>$(Revision)</SourceRevisionId>
<Company>My Company, Inc.</Company>
<Copyright>Copyright © $([System.DateTime]::Now.Year) by My Company, Inc. All rights reserved.</Copyright>
<Product>Smoke Tests</Product>
<NeutralLanguage>en-US</NeutralLanguage>
</PropertyGroup>
</Project>
Когда я собираю решение, созданный файл SmokeTests.1.0.0.nupkg не содержит никаких двоичных файлов, кроме самого SmokeTests.dll.Явно не то, что я хочу.
Как я могу получить все из bin \ debug \ net472 в созданный пакет NuGet без указания файла nuspec ?
Я всегда могу взломать шаг после сборки, который будет манипулировать файлом nupkg, но мне нужен правильный способ сделать это.
РЕДАКТИРОВАТЬ 1
Судя по количеству ответов, вопрос либо глупый, либо никто не использует ядро .Net.Разместил это и здесь - https://social.msdn.microsoft.com/Forums/vstudio/en-US/aa25cb08-ff95-4d81-b0c3-9c4a395f9999/how-to-pack-the-products-from-multiple-projects-into-one-nuget-without-any-nuspec-file?forum=msbuild
Неужели SO потерял свое очарование?
EDIT 2
Я добавил следующие свойства в PublicLib.csproj для создания пакета NuGet:
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
<PackageId>$(AssemblyName)</PackageId>
<NoPackageAnalysis>true</NoPackageAnalysis>
<IncludeBuildOutput>true</IncludeBuildOutput>
<AllowedOutputExtensionsInPackageBuildOutputFolder>.pdb</AllowedOutputExtensionsInPackageBuildOutputFolder>
И это почти работает, вот содержимое папки PublicLib.1.0.0.nupkg\lib\netstandard2.0
:
Но IncludedLib.pdb отсутствует.