首先,我收到了这个构建错误,但仅限于某些机器:
错误CS1705汇编' ***'有身份 ' ***,版本= 1.0.0.0,文化=中立, 公钥=空'使用' System.Net.Http,Version = 4.1.1.1, Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'哪个有更高的 版本比引用的程序集&System; Net.Http'有身份 ' System.Net.Http,Version = 4.1.1.0,Culture = neutral, 公钥= b03f5f7f11d50a3a' *** C:\ *** \ CSC 1有效
我猜,它以某种方式与SDK版本相关联。从我在“属性”窗口中看到的情况来看,在某些项目中,我有Microsoft.NETCore.App 1.1.1
而其他项目有Microsoft.NETCore.App 1.1.2
。
包更新后,构建成功(但为什么我被迫更新所有包?)。
但是,sdk版本仍然不同。现在我尝试使用Visual Studio的这个整合功能:
在工具提示中说:
由于附加限制,以下版本无法使用 project或packages.config
如何将所有项目升级到较新的SDK?如何确保未来不打破其他机器上的构建?
答案 0 :(得分:12)
如果之前手动升级了某些项目的@Service
包,它们将包含@Service
等元素。
原因是@Transactional(readOnly = true)
@Cacheable(value = "countries", key = "#root.methodName")
public List<Country> getCountries() {
final StatelessSession session = sessionFactory.openStatelessSession();
final Query query = session.createQuery("from Country order by id");
final List<Country> result = query.list();
session.close();
return result;
}
@Transactional(readOnly = true)
public long countTimeZones() {
final StatelessSession session = sessionFactory.openStatelessSession();
final Long result = (Long) session.createQuery("select count(o) from TimeZone o").uniqueResult();
session.close();
return result;
}
@Transactional(readOnly = true)
public List<Map<String, Object>> getPhotoAlbums() {
final StatelessSession session = sessionFactory.openStatelessSession();
final SQLQuery query = session.createSQLQuery("select "
+ "cast(m.id as varchar), "
+ "m.name "
// etc
+ "from media_album m "
+ "where m.account = :account "
+ "and ... "
+ "order by ...");
query.setParameter("account", uuidOfAccount);
query.setResultTransformer(AliasToEntityMapResultTransformer.INSTANCE);
final List<Map<String, Object>> result = query.list();
session.close();
return result;
}
SDK创建了一个隐式包引用。
由于隐式引用了包,因此NuGet不应该首先执行此操作,并且当前的VS更新不再允许更新隐式引用的包。
你可以在这里做两件事:
Microsoft.NETCore.App
版本的<PackageReference Update="Microsoft.NETCore.App" Version="1.1.1" />
元素。然后,这将使SDK版本(包含在MSBuild / dotnet cli中)选择版本。 1 +在Microsoft.NET.Sdk
个csproj文件中,设置
PackageReference
这将设置SDK的隐式引用将使用的版本。
1 +在Microsoft.NET.Sdk
个csproj文件中,设置
<PropertyGroup>
然后手动安装所需版本的 <RuntimeFrameworkVersion>1.1.2</RuntimeFrameworkVersion>
我建议使用选项1,因为它不再需要您修改csproj文件(例如,在添加新项目,重组解决方案等时)。
答案 1 :(得分:1)
在ASP.NET Core 2.0项目中遇到了相同的问题-这对我有用:
编辑您的'myproject.csproj'
文件,并使用以下内容添加/更新:
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<AspNetCoreHostingModel>InProcess</AspNetCoreHostingModel>
<TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> // add this line.
</PropertyGroup>
答案 2 :(得分:0)
正如Martin所说,我从所有项目中删除了所有NETCore
PackageReference,清理,打开了Nuget Manager,并从
https://dotnet.microsoft.com/download/visual-studio-sdks?utm_source=getdotnetsdk&utm_medium=referral