这是消除警告的正确方法C4945(从另一个assembly已经导入的符号)?

我有一个.net解决scheme(用C ++ / CLI编写),它引用了一些.dll项目,如下所示:

MainProject->ProjectA->ProbjectB MainProject->ProjectB 

最初我从MainProject引用了ProjectA和ProjectB,它给了我上面提到的警告。

我可以通过从ProjectMain中删除对ProjectB的引用来删除警告,但是它使MainProject依赖于ProjectB不那么明显。 这是摆脱警告的正确的做法吗?

一般而言,依赖关系可以通过有向图来描述,其中每个节点是软件组件,每个边是依赖关系。 在我看来,对图形可以做的更简单,越好越好。

没关系。

如果您有ReSharper,则可以通过右键单击ProjectMain – > Project Hierarchy来查看依赖关系图。

我只想描述,但不能解释,遵循相关的行为。

  • 在C#中使用CSCommon项目
  • 使用CSCommon在C#中项目CS1
  • 使用CSCommon在C ++中项目CPP1
  • 项目CPPMain,使用CPP1

如果每个项目都有自己的输出路径,我会收到C4945。
如果所有项目都有共同的输出路径,则警告消失。

我和你有同样的问题。 我按照你所描述的完全解决了这个问题:删除对“项目B”的引用(在你的具体情况下)。 这是我知道如何解决这个错误的唯一方法,就是禁用它。

不,删除引用可能不是正确的方法来处理它。

请参阅https://stackoverflow.com/a/12423588/321013

Use Dependencies in Build=false设置Use Dependencies in Build=false作为参考。

重点是,你应该有所有的引用, 在项目本身的代码作为直接引用,但设置Use Dependencies in Build=TRUE干扰,因为它也拉动传递引用,如果你也有冲突直接引用。 (至少在我的VS2005上)