c# - 观察具有传递项目依赖项的构建?

标签 c# .net

你好 :) 我是 C#/.NET 的新手,我有一些关于项目依赖性的问题。

首先:我的情况。我有一个解决方案——我们称它为 MyLibrary——它有几个 .dll 输出项目。这些项目相互依赖(作为项目引用),也依赖于一些外部库(.dll-References)。我确保项目引用外部引用的特定副本。

现在我有第二个解决方案 - MyApplication - 其中包含上述一些库项目和其他项目。所以我自己的所有项目都引用了彼此的iva项目引用。我已经使用引用设置“Copy Local: True”设置了所有项目。

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

我现在的问题:

  • 如果我的项目 C 依赖于项目 B,而项目 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)。

谢谢四位的帮助。

P.S.:我来自德国,我有一本关于 C# 的“Galileo”书,其中对这个主题的介绍不是很好。是否有一些直接与 Visual Studio 的项目管理功能相关的好教程/书籍?

最佳答案

回答你的几个问题:

If I have Project C which depends on Project B which again depends on Project A, I need to reference Project A in Project C even if Project C don't use any types from Project A. Is there a workaround for this?

我不认为这在一般情况下是正确的。如果 B 公开了 A 的某些类型,您只需要引用 A。例如,如果 B 中的类继承自 A 中的类,那么是的,C 将需要 A,因为 C 需要了解基类。但是,如果 B 在所有自己的类/接口(interface)后面“隐藏”A,那么 C 不需要知道 A。

Are there Tools, which read out the *.sln or *.csproj files and shows me directly which assemblie references which assembly?

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

关于 visual studio 问题的其他 2 个问题我不太熟悉。但总的来说,我很惊讶你会收到版本错误。您是否尝试使用强名称程序集?就我个人而言,除非您将这些程序集向公众开放,否则我不建议这样做。如果这些程序集只是为了在您自己的应用程序中分离关注点,那么就不应该真正进行版本控制。生成的应用程序将针对每个子项目的最新版本进行编译,并且每个子项目仅在发生更改时进行编译。

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

关于c# - 观察具有传递项目依赖项的构建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5195804/

相关文章:

c# - 在不可变的构造函数方法中验证构造函数参数是坏主意还是好主意?

c# - 如何设置自定义类的反射数组的行

c# - 以不同格式复制和粘贴

.net - 找不到框架 'Microsoft.NETCore.App' ,版本 '5' ,而找到 Microsoft.NETCore.App 5.0.0

c# - 什么时候使用扩展方法,ext。方法与继承?

c# - 必须在 new Uri() 中使用 http ://1/? 才能获取 NameValueCollection

c# - 在 EF 5 或 EF6 Code First 中映射多个结果集存储过程

c# - LINQ - 方法与查询语法差异

c# - Infragistics WebDataGrid 按列名 : VB. 从选定的行中获取值 net 到 C# 的转换

c# - 你应该在 C# 中使用指针(不安全代码)吗?