我有一个包含 2 个项目的解决方案:Proj1 和 Proj2,其中 Proj1 是启动项目。
Proj1 引用 Proj2(为了调用 Proj2 的类)并且它有现有的代码,该代码还引用了一个名为 A 的第 3 方 DLL,版本为 1.0.0.0。
Proj2 引用了相同的第 3 方 DLL A,但它在 2.0.0.0 版中引用了它,因为该项目中的类需要较新的实现,而 1.0.0.0 中没有。
到目前为止,我已经尝试了以下操作: 1. 引用 A 时将“特定版本”切换为 true 2. 在 Proj2 中添加了一个名为“v2Folder”的文件夹并将 A v2.0.0.0 添加到其中,将其“复制到输出目录” " to Copy Always 3. 向 app.config 添加了“探测路径”以指向带有 v2.0.0.0 DLL 的子文件夹
我想要的是在普通\bin\文件夹中看到A v1.0.0.0,在\bin\v2Folder中看到A v2.0.0.0,我希望当我运行我的Proj1.exe时,Proj1的旧代码仍然会调用A v1.0.0.0的方法,调用Proj2实现的只调用A v2.0.0.0的方法。
问题是,当我构建我的解决方案时,v1.0.0.0 被 v2.0.0.0 取代,构建日志中有类似“无法解决“A、版本 = 2.0.0.0、文化 = 中性、 PublicKeyToken=blah”和“A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=blah”。任意选择“A, Version=2.0.0.0, Culture=neutral, PublicKeyToken=blah”。
有人可以帮忙吗?
我有两个简单的表,我想执行INNER JOIN,但问题是我得到重复(对于列str1和str2)结果:
CREATE TABLE #A (Id INT, str1 nvarchar(50), str2 nvarchar(50))
insert into #A values (1, 'a', 'b')
insert into #A values (2, 'a', 'b')
CREATE TABLE #B (Id INT, str1 nvarchar(50), str2 nvarchar(50))
insert into #B values (7, 'a', 'b')
insert into #B values (8, 'a', 'b')
select * from #A a
INNER JOIN #B b ON a.str1 = b.str1 AND a.str2 = b.str2
Run Code Online (Sandbox Code Playgroud)
当我真正想要2时,它给了我4条记录.
我得到了什么:
id | str1 | STR2 | id | str1 | str2
1 | …