观察带有传递项目依赖项的构建?

S. *_*ter 3 .net c#

您好:)我对C#/ .NET还是相当陌生,我对项目依赖有一些疑问。

第一:我的情况。我有一个解决方案-我们称之为MyLibrary-其中有几个.dll-Output项目。这些项目相互依赖(作为项目引用),还依赖于某些外部库(.dll参考)。我确保该项目引用了外部引用的特定副本。

现在,我有了第二个解决方案-MyApplication-该解决方案具有上面的某些Library-Projects和其他项目。因此,我所有自己的项目都互相引用了iva项目参考。我已经使用参考设置“ Copy Local:True”设置了所有项目。

我的问题现在是,MyApplication引发一个错误,指出一个库项目具有不同的版本-这很奇怪,因为如果我构建MyApplication,它应该构建所有必需的项目。

我现在的问题:

  • 如果我有依赖于项目B的项目C,而项目B又依赖项目A,则即使项目C不使用项目A中的任何类型,我也需要引用项目C中的项目A。是否有解决方法?
  • 我可以得到一个干净的输出日志,其中指出了何时构建哪个项目吗?从Visual Studio输出日志中,我很难区别项目是“重建”还是刚刚复制到目标文件夹
  • 是否有工具可以读取* .sln或* .csproj文件并直接向我显示哪个程序集引用哪个程序集?
  • 正如我所说,我已经在MyApplication中包含MyLibrary的几个项目,并将MyApplication中MainProject的引用设置为“ Copy Local:True”。如果我清理MyApplication(解决方案),它将从MyLibrary-Destination-Folder中删除所有* .dll。我可以以某种方式抑制这种行为(它应该只从MyApplication-destination-folder中删除* .dll)。

谢谢四位的帮助。

PS:我来自德国,我有一本有关C#的“伽利略”书,其中涉及的主题不是很好。是否有一些与Visual Studio的项目管理功能直接相关的优秀教程/书籍?

Jam*_*unt 6

在回答您的几个问题:

如果我有依赖于项目B的项目C,而项目B又依赖项目A,则即使项目C不使用项目A中的任何类型,我也需要引用项目C中的项目A。是否有解决方法?

我不认为这通常是正确的。仅当B公开了A中的某些类型时,才需要引用A。例如,如果B中的类继承自A中的类,则是的,C将需要A,因为C需要了解基类。但是,如果B“隐藏”所有A是其自己的类/接口,则C不需要了解A。

是否有工具可以读取* .sln或* .csproj文件并直接向我显示哪个程序集引用哪个程序集?

您可以直接从程序集的元数据中获取此信息。 Reflector是一个很好的工具。它是免费的,但似乎他们在4天前就开始收费了!

我不太熟悉关于Visual Studio问题的其他两个问题。但总的来说,我很惊讶您收到版本错误。您是否要使用强名称程序集?我个人不建议您这样做,除非您要公开这些程序集。这些程序集仅是为了在您自己的应用程序中分离关注点,然后就不应该真正涉及版本控制了。生成的应用程序将根据每个子项目的最新版本进行编译,并且每个子项目仅在更改时才进行编译。

无论如何,您必须在某处指定您需要特定程序集的特定版本(可能在app.config / web.config中)。您可以仅从此配置中删除版本约束吗?