我的解决方案上周五构建得很好。
今天我启动它,收到此错误消息:
无法加载文件或程序集“MyApplication,Version=0.0.0.0,Culture=neutral,PublicKeyToken=null”或其依赖项之一。系统找不到指定的文件。
这在我的智能设备单元测试项目中失败了。
为此我已经谷歌搜索过。虽然其他人有有我的问题,但我似乎找不到有效的解决方案。
当我双击错误时,它会将我带到 Microsoft.TeamTest.targets。这是有问题的目标:
<Target Name="ResolveTestReferences" Condition="'@(Shadow)'!=''">
<BuildShadowTask
CurrentResolvedReferences="@(ReferencePath)"
CurrentCopyLocalFiles="@(ReferenceCopyLocalPaths)"
Shadows="@(Shadow)"
ProjectPath="$(ProjectDir)"
IntermediatePath="$(IntermediateOutputPath)"
SignAssembly="$(SignAssembly)"
KeyFile="$(AssemblyOriginatorKeyFile)"
DelaySign="$(DelaySign)">
<Output TaskParameter="FixedUpReferences" ItemName="ReferencePath"/>
<Output TaskParameter="NewCopyLocalAssemblies" ItemName="ReferenceCopyLocalPaths"/>
</BuildShadowTask>
</Target>
如果我只是构建我的实际项目(而不是测试项目),那么它就可以正常工作。
有什么想法吗?
找到解决方案。
问题在于发布模式、项目引用和复制本地标志。在 Release 中,访问器组件似乎是使用不同的机制构建的,但存在缺陷。
这个缺陷一定是一个错误的假设。默认情况下,项目引用将复制本地标志设置为 true。这意味着没有 XML 节点写入单元测试项目文件以供项目引用。如果我通过将标志翻转为 false 来强制将 XML 节点写入项目文件,然后将其翻转为 true,问题即可解决。
微软的另一项可怕的黑客工作,难怪它在 2012 年被弃用。
在“项目依赖项”对话框的解决方案属性窗口中,将单元测试项目的依赖项添加到实际产品项目中。
这应该确保实际产品在单元测试项目之前构建(如果尚未构建)。
对我来说,这个问题也与单元测试项目有关。卸载单元测试项目解决了问题。