您好:)我对C#/ .NET还是相当陌生,我对项目依赖有一些疑问。
第一:我的情况。我有一个解决方案-我们称之为MyLibrary-其中有几个.dll-Output项目。这些项目相互依赖(作为项目引用),还依赖于某些外部库(.dll参考)。我确保该项目引用了外部引用的特定副本。
现在,我有了第二个解决方案-MyApplication-该解决方案具有上面的某些Library-Projects和其他项目。因此,我所有自己的项目都互相引用了iva项目参考。我已经使用参考设置“ Copy Local:True”设置了所有项目。
我的问题现在是,MyApplication引发一个错误,指出一个库项目具有不同的版本-这很奇怪,因为如果我构建MyApplication,它应该构建所有必需的项目。
我现在的问题:
谢谢四位的帮助。
PS:我来自德国,我有一本有关C#的“伽利略”书,其中涉及的主题不是很好。是否有一些与Visual Studio的项目管理功能直接相关的优秀教程/书籍?
在回答您的几个问题:
如果我有依赖于项目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中)。您可以仅从此配置中删除版本约束吗?