我有以下项目的解决方案。
MyAppNameSpace.Cli [这是以DotnetCliTool tonuget推送的CLI应用程序]
MyAppNameSpace.Core [此项目由CLI工具引用]
MyAppNameSpace.Common [解决方案中共享的公共项目]
MyAppNameSpace.Vsix [Visual studio扩展名]
我想要实现的是将CLI项目作为DotnetCliTool推送到nuget。我跟着提到here。我找不到任何dotnet cli工具项目的样本,并且在解决方案中引用了另一个项目。
问题是我在执行nuget push
后执行dotnet pack
。该包已成功推送到nuget,但其项目依赖项被列为包依赖项。因此,当我在任何项目中将此工具作为DotnetClitToolReference引用时,它开始在Nuget上查找那些显然不存在的依赖项目。
这是我的CLI项目的csproj
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>netcoreapp2.0</TargetFramework>
<AssemblyName>dotnet-nmg</AssemblyName>
<Authors>Nabin Karki Thapa</Authors>
<Version>1.0.2</Version>
<Description>
The CLI tool for NModelsGenerator, a visual studio extension to create POCO classes from Database Tables and Views.
</Description>
<DebugType>portable</DebugType>
<Copyright>Nabin Karki Thapa</Copyright>
<PackageTags>dotnet cli tool</PackageTags>
<PackageType>DotnetCliTool</PackageType>
<GeneratePackageOnBuild>True</GeneratePackageOnBuild>
<PackageProjectUrl>https://github.com/nabinked/NModelsGenerator</PackageProjectUrl>
<PackageLicenseUrl>https://github.com/nabinked/NModelsGenerator/blob/master/LICENSE</PackageLicenseUrl>
<RepositoryUrl>https://github.com/nabinked/NModelsGenerator</RepositoryUrl>
<RepositoryType>git</RepositoryType>
<PackageReleaseNotes>More information is available at https://github.com/nabinked/NModelsGenerator </PackageReleaseNotes>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.CommandLineUtils" Version="1.1.1" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\NModelsGenerator.Common\NModelsGenerator.Common.csproj" />
<ProjectReference Include="..\NModelsGenerator.Core\NModelsGenerator.Core.csproj" />
</ItemGroup>
<Target Name="PostcompileScript" AfterTargets="Pack" Condition=" '$(IsCrossTargetingBuild)' != 'true' ">
<Exec Command="call nugetpush $(Configuration) $(MSBuildProjectDirectory)/bin/$(Configuration)/$(AssemblyName).$(Version).nupkg" />
</Target>
</Project>
我做错了什么?关于此主题的在线文档很少。任何帮助都非常感谢。
答案 0 :(得分:0)
将一个DotnetCliTool控制台项目推送到nuget列出它作为包依赖项的项目依赖项
你没有做错任何事。这是一个关于dotnet pack的已知问题,不包括参考项目。这肯定会在将来的版本中解决。
目前的解决方法是使用自定义的msbuild目标来执行#3891 (comment)中描述的 dasMulli :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netstandard2.0</TargetFramework>
<TargetsForTfmSpecificBuildOutput>$(TargetsForTfmSpecificBuildOutput);IncludeP2POutput</TargetsForTfmSpecificBuildOutput>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\testprivatelib\testprivatelib.csproj" PrivateAssets="All" />
</ItemGroup>
<Target Name="IncludeP2POutput">
<ItemGroup>
<BuildOutputInPackage Include="$(OutputPath)\testprivatelib.dll" />
</ItemGroup>
</Target>
</Project>
希望这有帮助。