我已经为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。
答案 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>