我有一个针对.Net 4.0的项目,其中一个引用的程序集是.Net 4.5.
在我安装.Net 4.5之前,这工作正常,但是在安装之后,我得到了关于这些线路的目标.Net版本的五个警告:
*主要参考"xxxx.Library,Version = 1.0.0.1,Culture = neutral,processorArchitecture = MSIL"无法解析,因为它是针对".NETFramework,Version = v4.5"框架构建的.这是比当前目标框架".NETFramework,Version = v4.0"更高的版本
还有这个:
无法解析主要参考"Microsoft.TeamFoundation.Build.Workflow,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL",因为它对框架程序集"System.IO.Compression"具有间接依赖性,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"无法在当前目标框架中解析." .NETFramework,版本= V4.0" .要解决此问题,请删除引用"Microsoft.TeamFoundation.Build.Workflow,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a,processorArchitecture = MSIL"或将应用程序重新定位到包含"System.IO"的框架版本.Compression,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b77a5c561934e089".测试
为什么Visual Studio讨厌我?如果它可以在更新到4.5之前编译,目标框架没有改变,它仍然适用于VS2010的同事.Net 4为什么我被填充?
我正在尝试通过程序集检查其他.NET应用程序正在使用的框架版本.我找到了两种方法来获得框架的版本(首先通过ImageRunetimeVersion和程序集的FullName)但我从它得到两个不同的值,我不知道哪个是正确的:
Assembly ass = Assembly.LoadFrom(autPath);
string imageRuntimeVersion = ass.ImageRuntimeVersion;
Console.WriteLine("ImageRunetimeVersion: " + imageRuntimeVersion);
Console.WriteLine("FullName: " + ass.FullName);
Console.WriteLine("");
Console.WriteLine("----");
Console.WriteLine("Referenced Assemblies: ");
Console.WriteLine("");
AssemblyName[] referencedAssemblies = ass.GetReferencedAssemblies();
foreach (AssemblyName a in referencedAssemblies)
{
Console.WriteLine(a.FullName);
}
Run Code Online (Sandbox Code Playgroud)
如果我要用我的应用程序和例如paint.net测试这个,结果是:
就像你可以看到我不能说哪个"版本"是正确的.最大的问题是,如果我要查看我的.net应用程序的项目属性,目标平台是3.5而不是2.0或1.0-