我正在尝试将解决方案分为一个主项目和一个包含一些帮助程序类的项目。 “帮助程序项目”使用一些外部库,例如NLog。
我像这样在我的csproj文件中引用NLog:
<ItemGroup>
<PackageReference Include="NLog" Version="4.6.6" />
</ItemGroup>
我可以在我的帮助程序项目中很好地使用NLog。但是helper项目可能会用在许多不同的主项目中,因此,如果仅从我的主项目中引用helper项目也会使我能够访问我的主项目中的NLog,那将是不错的选择,但这是行不通的。我总是必须在主项目中显式添加对NLog的引用。
在没有手动添加对NLog的引用的情况下,是否可以做些什么来引用主项目中的NLog?
答案 0 :(得分:2)
在没有手动添加对NLog的引用的情况下,是否可以做些什么来引用主项目中的NLog?
不,这就是引用的工作方式。您需要将包引用添加到直接使用它的每个项目中*。
但是,通常处理日志的方式是“ helper”库对用于日志的 actual 库一无所知。它只是知道一个接口。 过于简化的示例是:
public interface ILogger
{
void Log(string message);
}
然后,托管应用程序的工作是拥有该接口的实现(例如,使用NLog),并使用依赖项注入将其传递给帮助程序类。
*在某些情况下,您不需要引用,但它有些深奥。如果您的程序集不直接使用引用,而只是位于两个程序集之间的中间。您不需要直接添加引用。与您的具体情况无关