Dotnet安装自定义模板问题

时间:2018-10-28 20:08:13

标签: c# visual-studio .net-core

我已经为MS Orleans Grain创建了一个项目模板(.NET Standard 2.0项目) 要使用此命令进行安装:

dotnet new -i OrleansGrain.NetCore.ProjectTemplate::*

该程序包托管在Nuget.org上,使用.NET控制台应用程序设法使其正常运行,但是该程序包是.NET Standard 2.0类库,当我尝试安装时,出现以下错误消息:

  

C:\ Users \ thiag.templateengine \ dotnetcli \ v2.1.403 \ scratch \ restore.csproj   :错误NU1202:软件包OrleansGrain.NetCore.ProjectTemplate 1.0.2是   与netcoreapp1.0(.NETCoreApp,Version = v1.0)不兼容。包   OrleansGrain.NetCore.ProjectTemplate 1.0.2支持:netstandard2.0   (.NETStandard,Version = v2.0)生成MSBuild文件   C:\ Users \ thiag.templateengine \ dotnetcli \ v2.1.403 \ scratch \ obj \ restore.csproj.nuget.g.props。   生成MSBuild文件   C:\ Users \ thiag.templateengine \ dotnetcli \ v2.1.403 \ scratch \ obj \ restore.csproj.nuget.g.targets。   还原在1.73秒内失败了   C:\ Users \ thiag.templateengine \ dotnetcli \ v2.1.403 \ scratch \ restore.csproj。

2 个答案:

答案 0 :(得分:0)

发现了问题,在为项目模板创建Nuget包时,我们应该使用Nuget命令行。

https://docs.microsoft.com/en-us/nuget/tools/cli-ref-pack

需要创建nuspec文件并使用:

nuget pack file.nuspec

然后正确生成nupkg,而不是从Visual Studio上的解决方案生成。

答案 1 :(得分:0)

实际上,有一种方法可以使SDK样式的项目起作用。

通过https://docs.microsoft.com/en-us/nuget/reference/msbuild-targets#suppress-dependencies,在添加一个SuppressDependenciesWhenPacking属性并将其设置为.csproj文件中的true时,将跳过将<dependencies>节点添加到生成的.nuspec文件中。

这是一个PropertyGroup的示例,它将生成一个适当的dotnet模板包。

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.2</TargetFramework>
    <GeneratePackageOnBuild>true</GeneratePackageOnBuild>
    <Description>SDK Style Test Template</Description>
    <PackageType>Template</PackageType>
    <PackageId>SDKStyle.DotNetTemplate.Test</PackageId>
    <Product>SDKStyle.DotNetTemplate.Test</Product>
    <Version>1.0</Version>
    <Authors>SDKStyle.DotNetTemplate.Test</Authors>
    <Company>SDKStyle.DotNetTemplate.Test</Company>
    <SuppressDependenciesWhenPacking>true</SuppressDependenciesWhenPacking>
  </PropertyGroup>