![](/img/trans.png)
[英]Install custom .NET Standard NuGet Package in .NET Core Web API
[英]Custom .NET Standard Nuget package not installing correctly
我有一个带有许多POCO的.NET Standard类库项目。 该项目是使用TeamCity构建的,并使用内置的Nuget服务器以Nuget包的形式发布。
我遇到的问题是,当它与许多.NET Framework类库项目以及ASP.NET MVC和Web API项目(设置为.NET Framework 4.7.1)一起安装到我的解决方案中时,它似乎卡在了较旧的版本,并且无法识别我添加到项目中的任何新类或方法-例如NewMethod1()
Nuget包的项目文件
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard2.0;net461;net462;net47</TargetFrameworks>
<Version>1.0.0</Version>
</PropertyGroup>
<PropertyGroup>
<NetStandardImplicitPackageVersion>2.0.0</NetStandardImplicitPackageVersion>
<Description>Standard entities used within our systems</Description>
<AssemblyVersion>1.0.0.0</AssemblyVersion>
<FileVersion>1.0.0.0</FileVersion>
<Authors>Company X</Authors>
<Company>Company X</Company>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
<OutputPath>bin\Release</OutputPath>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
<OutputPath>bin\Debug</OutputPath>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Newtonsoft.Json" Version="11.0.2" />
</ItemGroup>
</Project>
TeamCity正在使用“ dotnet”还原,构建和打包选项。
程序包存储在C:\\ Users \\ antho.nuget \\ packages中的Nuget缓存中。 当我使用对象浏览器检查dll时,它包含新的类和方法(例如NewMethod1())。
当我将此包安装到.NET Framework解决方案中时,在安装过程中不会发生任何错误。 如果我尝试使用新方法-NewMethod1()-代码将无法编译。
如果我创建了一个全新的解决方案和ASP.NET MVC项目并安装了该程序包,则该新方法可以在代码中使用,并且可以成功编译。
是什么原因导致新版本无法正确安装? 提供一个重现该问题的示例很棘手,因为它似乎可以在新项目中工作。
更新资料
如果我将新项目添加到解决方案并安装Nuget软件包,它将获得最新版本。
项目A
<PackageReference Include="AutoGuru.Shared.Utilities" Version="1.0.369" />
public class Class1
{
public void Test()
{
"dfdfdfdf".SanitizeVehicleRego();
}
}
项目B
<PackageReference Include="AutoGuru.Shared.Utilities">
<Version>1.0.369</Version>
</PackageReference>
public class Class1
{
public void Test()
{
"fdfdf".SanitizeVehicleRego();
}
}
项目B编译成功,而项目A编译失败。 SanitizeVehicleRego()是AutoGuru.Shared.Utilities包中的字符串扩展方法。
我的答案相当大,因此我添加了答案而不是评论。
第1步
还原软件包时,请检查输出,有时dotnet restore
会自动解析其他版本(控制台中应针对此类情况发出警告)。
第2步
如果在步骤1中找到任何信息。 尝试清理所有本地nuget缓存。
dotnet nuget locals all --clear
我不确定本地nuget包是否处于缓存状态。 但是,如果是这样,它将解析您软件包的正确版本。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.