我在一个创建解决方案的团队中工作。在解决方案中,我们有4个项目(数据访问,业务逻辑和单元测试以及常见事物)。
现在每当我重建它都不会带来任何错误。在我的同事PC上工作顺利,但在我的电脑上,每当我尝试运行单元测试时,我都会收到以下错误(手动翻译成英文,所以在撰写此问题时,任何拼写错误都是我的错误):
{"文件或程序集\" MyWorkspaceName.MySolutionname.CT, version = 0.2.0.0,Culture = neutral,PublicKeyToken = null \"或参考 没找到它。系统找不到给定的 文件。":" MyWorkspaceName.MySolutionname.CT,版本= 0.2.0.0, Culture = neutral,PublicKeyToken = null"}
由于该版本和名称存在(这是常见的事情,我手动检查它是否存在)我还检查了CT内部的参考是否正确.....我不知道是什么可能是因为它不能为我工作(但是在我的同事PC上工作)。
因此,我的问题是:该错误信息可能是什么原因?
更新 现在可以找到CT,但是当我尝试从BL访问DA时,它表示与之前的DA相同的错误,而不是CT(从UT部分运行)。
当我从同一解决方案中创建的控制台应用程序项目运行SAME方法时,它们可以正常工作而不会产生任何错误。
答案 0 :(得分:2)
有三种可能性,
您确定已经安装了同事PC上的每个第三方工具/库吗?
很可能第三方引用应该作为NuGet包添加,但如果您的项目引用第三方程序集,而第三方程序集又引用通过某些安装程序安装的另一个程序集,并且您的计算机上没有该程序集,则可能会出现类似的错误。我有类似的问题,并且一些本机库不会作为依赖项显示错误,除非您打开汇编日志并进行调查。
答案 1 :(得分:0)
您是否尝试在重建之前删除/ obj和/ bin文件夹?有时会出现旧的程序集引用缓存,这会使构建过程变得混乱。
这是一个用于递归擦除/ bin和/ obj文件夹的PowerShell脚本。只需在主解决方案文件夹中运行它。
Get-ChildItem .\ -include bin,obj -Recurse | foreach ($_) { remove-item $_.fullname -Force -Recurse }
我遇到的另一个可能的问题是GAC中安装的程序集和本地下载的NuGet程序包之间存在差异。 - 您的VS从GAC获取DLL,但在您的团队配对计算机上,DLL来自NuGet,它是不同的版本。
要在VS中获取程序集绑定信息:工具 - >选项 - >项目和解决方案 - >构建并运行 - > MS Build项目构建输出详细程度 - >设置为Diagnostic并在构建时将诊断信息复制粘贴到记事本++并搜索错误'和'冲突'然后解决。
答案 2 :(得分:0)
通常如果我无法在有意义的时间内解决此类问题,我会向Process Monitor
寻求帮助
在你的情况下,我会添加一个不太严格的过滤器,例如:Path包含.dll,并在应用程序启动期间查找失败结果。这可能会揭示无法找到哪些实际的dll文件以及它们被查找的位置。
答案 3 :(得分:0)
Visual Studio适用于信任系统,这意味着您必须明确信任网络驱动器。您是否尝试将项目复制到本地硬盘以查看它是否有效?
以下是微软关于如何使用CasPool.exe工具更改信任的文章。
Caspol.exe (Code Access Security Policy Tool)
关于这一点的几点说明让你不要错过任何东西。对于32位和64位应用程序,存在不同的信任,因此请确保将信任应用于两者以避免任何问题。
在您遇到此工具的问题之前,我强烈建议您先复制到本地硬盘驱动器,看看是否确实存在问题。