使用Unity IoC Container时,VS 2015建模项目MSB3268会发出警告

dix*_*xus 2 .net unity-container visual-studio-2015

我正在使用Visual Studio Enterprise 2015并尝试创建层图以生成和验证依赖项.但这失败了,因为VS在构建建模项目时抛出警告:

CurrentVersion.targets(1819,5):警告MSB3268:无法解析主要引用"...\ClassLibrary4\bin\Debug\ClassLibrary4.dll",因为它对框架程序集"System.Runtime,Version"具有间接依赖性= 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a"无法在当前目标框架中解析." .NETFramework,版本= V4.0" .要解决此问题,请删除引用"...\ClassLibrary4\bin\Debug\ClassLibrary4.dll"或将应用程序重新定位到包含"System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken"的框架版本= b03f5f7f11d50a3a".

我发现如果删除Unity,警告就会消失,并且依赖关系会按预期显示.

这种行为的原因是什么,有没有解决方法?

我尝试了Unity预发行包以及另一个目标框架.完全没有效果.在添加建模项目并在一个引用项目中使用unity之后,可以使用新项目重现该问题.

dix*_*xus 5

在将构建输出设置为详细信息后,我找到了一个解 VS2015使用错误的目标框架(4.0)编译建模项目的问题:

任务参数:TargetFrameworkDirectories = C:\ Program Files(x86)\ Reference Assemblies\Microsoft\Framework.NETFramework\v4.0

建模项目的项目文件中没有TargetFrameworkVersion(*.modelproj).但在将其添加到第一个属性组后,它正在按预期编译和验证.没有任何警告.

解:

  1. 卸载建模项目
  2. 右键单击 - >打开*.modelproj
  3. 将以下行添加到第一个Property(替换为您的目标框架)

(用目标框架替换v4.5)

<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
Run Code Online (Sandbox Code Playgroud)

使用架构工具获得快乐.