gpt4 book ai didi

c# - 创建条件 NuGet 包

转载 作者:太空狗 更新时间:2023-10-30 01:04:20 24 4
gpt4 key购买 nike

我已经在 C# 中创建了一个自定义程序集,它将被许多不同的现有系统使用,要让这个程序集与我们的系统一起工作涉及很多配置,为了让事情变得更容易,我们决定创建本地 NuGet 服务器并将程序集滚动到 NuGet 包中。

这非常有效,我们能够添加程序集所需的所有依赖项并添加 web.config.transform 文件以合并所需的任何其他节点。

这是我们遇到第一个绊脚石的地方......

首先,正如我之前提到的,程序集是用 C# 编写的,我们正在测试运行的应用程序是用 VB.Net 编写的。当我们在程序集中使用 log4net 时,我们已经实现了 WebActivatorEx 以确保它在应用程序启动时被初始化,这意味着我们有一个 AppStart 类,它位于App_Start 文件夹。但是,在引用了 WebActivatorEx 文档之后,我们注意到如果项目是一个网站,而不是一个web 应用程序,那么AppStart 类必须位于 App_Code 文件夹而不是 App_Start 文件夹内,并且还必须使用 PostApplicationStartMethod 而不是 PreApplicationStartMethod.

此外,由于 AppStart 类是用 C# 编写的,并且将位于 VB.Net 项目中,因此只有当目标项目是 VB 时,我们才需要将其转换为 VB,以避免弄乱更多配置文件是我们正在努力减少的事情。

简而言之,这里的主要问题是:

  1. 我们的 NuGet 包是否可以具有某种条件行为,即如果它是一个 VB.Net 项目,则在 VB.Net 中添加 AppStart 类,如果它C#,保留为 C#。

  2. 如果项目是网站,则将此 AppStart 类放在 App_Code 文件夹中,并使用 PostApplicationStartMethod,如果项目是Web 应用程序将 AppStart 类放在 App_Start 文件夹中,并使用 PreApplicationStartMethod

  3. 就初始化 log4net 而无需重写目标应用程序的 global.asax 而言,这是否是正确的方法

  4. 我知道您可以在 NuGet 包中运行 PowerShell 命令,是否可以使用它来确定项目是否为 C# || VB 还是我把事情复杂化了,我应该为每个场景简单地创建 4 个不同的 NuGet 包,但这似乎是完全错误的。

我将等待并欢迎任何建议或意见。

最佳答案

假设用户没有修改 appstart 代码,您可以将 appstart 代码放在编译的程序集中,这样可以避免 vb.net 与 c# 的区别。

我也不确定为什么您需要使用 PostApplicationStart 而不是 PreApplicationStart。这不是网站与 Web 应用程序之间的内在区别,您可能需要更深入地了解这一点。这可能是您的特定网站实现过程中的一个顺序。

关于c# - 创建条件 NuGet 包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23779601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com