Ant*_*ony 7 c++-cli .net-4.0 visual-studio-2012
我目前在一个项目中使用Microsoft BCL Async库(此处),其中包含大量相互依赖的程序集,这些程序集都是针对.NET 4完整配置文件编译的,我不得不在每个项目中使用程序集绑定重定向来使其编译(按照问题2 在这里).
我现在的问题是我从C++/CLR DLL项目中使用其中一个库,它实际上不需要使用异步但我有以下编译错误:
2> C:\ Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.Common.targets(1578,5):警告MSB3268:无法解析主要引用"ImInterface.dll",因为它具有间接依赖性框架程序集"System.Runtime,Version = 1.5.11.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"无法在当前目标框架中解析." .NETFramework,版本= V4.0" .要解决此问题,请删除引用"ImInterface.dll"或将应用程序重新定位到包含"System.Runtime,Version = 1.5.11.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"的框架版本.
我添加了我在所有C#项目中使用的相同app.config文件,但它似乎对C++项目没有任何影响.我是否必须将其放在特定目录中或执行任何其他步骤以启用app.config文件?
我的app.config文件的内容是:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Runtime" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.11.0" newVersion="2.5.11.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Threading.Tasks" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-2.5.11.0" newVersion="2.5.11.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏!
问候,安东尼
小智 7
我遇到了同样的问题,结果证明是有<SpecificVersion>True</SpecificVersion>
帮助的.
在继续阅读之前,请注意问题似乎只发生在使用"Visual Studio 2012 - Windows XP(v110_xp)"平台工具集构建C++/CLI项目时!也就是说,如果您不需要创建与WinXP兼容的DLL,请切换到"Visual Studio 2012(v110)",您应该没问题.
让我详细说明我的情景:
我有一个针对WinXP(v110_xp)的C++/CLI控制台应用程序项目(ConsoleAppCLI).ConsoleAppCLI引用了一个库(AsyncLib),它通过NuGet安装了Microsoft.Bcl.Async:
[ConsoleAppCLI.vcxproj] (C++/CLI, .NET 4.0 v110_xp)
|
|
[AsyncLib.csproj] (C#, .NET 4.0)
|
|
[Microsoft.Bcl.Async] (via NuGet)
Run Code Online (Sandbox Code Playgroud)
我有完全相同的问题,app.config也没有帮助,但有什么帮助是以下内容:
<ProjectReference>
AsyncLib.csproj)<ProjectReference>
和之后</ProjectReference>
,添加以下内容:<SpecificVersion>True</SpecificVersion>
但请注意,ConsoleAppCLI是依赖关系树中的顶级项目.如果你有这取决于它生产MSB3268的C++/CLI装配组件,你也必须添加<SpecificVersion>True</SpecificVersion>
到参考(例如,如果我有这有ConsoleAppCli作为依赖附加的C#库,我将不得不做出参考ConsoleAppCli <SpecificVersion>True</SpecificVersion>
以及).
顺便提一下,这个解决方案来自这里.