2

我有一个正在尝试迁移到 .NET 4.5 的 Web 应用程序项目。我们正在从 TFS 构建到安装了 VS2010 的构建服务器,但它还包含 VS2012 的所有正确参考程序集并安装了 .NET 4.5 框架。

运行包含私有访问器的单元测试项目时,构建失败并出现错误 -

System.IO.FileNotFoundException: Could not load file or assembly 'file:///C:\LocalPath\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll'

但是,如果我将 $(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\TeamTest\Microsoft.TeamTest.Targets 文件从

<UsingTask TaskName="BuildShadowTask" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v11.0\TeamTest\Microsoft.VisualStudio.TestTools.BuildShadowsTask.dll"/>

<UsingTask TaskName="BuildShadowTask" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\TeamTest\Microsoft.VisualStudio.TestTools.BuildShadowsTask.dll"/>

VS2012 不能再使用私有访问器了吗?如果是这样,为什么 Microsoft.VisualStudio.TestTools.BuildShadowsTask.dll v11 失败,而 v10 成功?

编辑这将在实际安装了 VS2012 的机器上编译,所以一定是我缺少程序集或注册表项。查看构建日志,在这两种情况下,它都从 v11 文件夹加载 BuildShadowTask。我想我的问题变成了,是否可以在不安装 Visual Studio 2012 的情况下使用私有访问器?如果是这样,我需要做出什么改变才能使这个目标成功?

4

1 回答 1

1

私有访问器在 VS2012 中已被弃用,因此您将无法使用 VS2012 创建私有访问器。这就是 11.0 dll 任务失败的原因。推荐的替代方法是使用PrivateObject类或InternalsVisibleTo属性。

于 2013-02-23T03:24:12.693 回答