我的解决方案包含项目A
和测试项目TA
。测试项目引用解决方案项目A
和一些DLL B
。 DLL B
引用A
生成的DLL。我的Foo
类型在A
上定义,并由TA
进行测试。
当我告诉你建造TA
时,VS2013向我发射炸弹:
The type 'Foo' is defined in an assembly that is not referenced. You must add a reference to assembly 'A, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. C:\mysolution\src\TA\TestFoo.cs 32 17 TA
然而Foo
类型是在A
上定义的,这是我的解决方案!甚至编辑都明白!!!只是构建器坚持使用B
定义的任何内容。
如何告诉VS忽略/覆盖B
对A
的引用,并使用项目A
的输出?
我可以使用一些assemblyBinding
或类似的选项来进行构建吗?
答案 0 :(得分:0)
如果我理解你的话,这就是你的依赖关系图:
TA --> B
| |
| V
---> A
听起来你必须明确设置构建顺序。 A
之前必须构建B
,B
之前必须构建TA
,否则B
和TA
将引用不同版本的A
。如果在B
之前构建A
,那么它将引用较早版本的A
。
您可以通过在B中创建A
项目引用或在Visual Studio中为解决方案显式设置项目依赖项来解决此问题。
答案 1 :(得分:0)
我这样解决了:
TA.csproj
更改为不引用项目A
,而是引用B
引用的相同DLL。App.config
添加到TA
,其中assemblyBinding
元素强制.NET加载我在解决方案中构建的A
版本,用于{ {1}} DLL。