当前位置: 首页 > 知识库问答 >
问题:

是否可以将相同的DLL同时添加到控制台应用程序和NuGet依赖项中?

闻人杰
2023-03-14

我有一个以.NET标准1.5为目标的项目,它作为几个DLL部署在Nuget上。该项目是从Java移植而来的。在项目的一些类中,有静态的main()方法,这些方法是从命令行运行的。

    null

我想知道的是,有没有一种方法来编译DLL,这样它就可以在没有两个独立的(混乱的)DLL的情况下使用?

基本上,我试图获得与Java中类似的功能,在Java中,包可以被应用程序引用或在命令行上运行(并在命令行上指定入口目标)。

例如,在Java中,有些文件既是包的一部分,又包含静态main(object[]args)方法。

public class SomeClass
{
    public void DoSomething(string arg1, string arg2, string arg3)
    {
        // implementation...
    }

    public static void Main(object[] args)
    {
         // parse args...

         new SomeClass().DoSomething(arg1, arg2, arg3);
    }
}
java <package>.jar <namespace>.SomeClass [args]
dotnet <assembly>.dll <namespace>.SomeClass [args]

这将比创建一个单独的包装器DLL更好,或者创建一个单独的项目,该项目必须选择someclass的所有依赖项,以便将它们编译到单个程序集(控制台应用程序)中。

此外,每个包都有几个静态main()方法,这似乎在.NET Core中得到了支持,这也是我的另一个问题。

共有1个答案

程城
2023-03-14

对于。NET Standard/Core,最好的选择是让第二个项目编译为EXE,该EXE具有一个简单的Main()方法,该方法指向库的版本。这并不理想,但问题是。NET核心的运行时是如何工作的。以.NET标准为目标的项目可供与该标准版本兼容的所有项目使用。针对特定的。NetcoreApp的项目只能被其他。NetcoreApp引用,因此您无法获得针对标准的好处。

对于打包/NuGet部署,控制台应用程序版本可以放入NuGet的tools文件夹中,以便最终用户可以使用它。您并不真正希望通过标准的NuGet内容文件夹部署可执行文件,因为它不会真正遵循标准,并且会让NuGet用户感到困惑。

 类似资料:
  • 我的应用程序中有两个方法,它们使用相同的请求映射和不同的(http)方法 是否有可能在不同的控制器中定义它们,或者我应该考虑一些(可怕的)变通方法(比如重命名一个URL)?

  • 计费:这个应用程序存储所有的计费相关逻辑,例如;订阅计划、产品、优惠券和类似内容。 帐户:此应用程序保存帐户数据,例如:客户帐户、交易等。 现在我有一个问题,我需要在以下情况下把这两个问题联系起来: 客户(帐户应用程序)订阅的计划(在帐单应用程序中) 客户(帐户应用程序)购买的产品(在帐单应用程序中) 客户(在帐户应用程序中)发票(在帐单应用程序中) 客户(在计费应用程序中)申请/兑换的优惠券(在

  • 我目前正在使用Android Studio 1.2开发一个Android应用程序 我想在Android应用程序中使用外部Java项目作为依赖项。这个Java项目是一个Maven项目 如何将此项目作为依赖项添加到Android应用程序中,以便在Android应用程序中引用Java/Maven项目的类? Android应用程序是使用Grandle构建的。

  • 这个问题是标题之一。下面是一个简短的解释。 我有一个使用iBatis 2的应用程序,我想迁移到myBatis的最新版本(编写时为3.2.0)。由于我没有足够的时间开始和完成工作,而不必在该应用程序上执行其他任务,并且考虑到创建分支最终需要痛苦的合并,我想知道是否可以引入myBatis,然后逐步实现我的目标。最终,iBatis将被完全移除。 我在路上会遇到一些冲突吗?换句话说,iBatis 2.3和

  • 问题内容: 我只想查看流程的状态,是否可以将控制台附加到流程中,所以我可以在流程内部调用函数并查看一些全局变量。 最好在不受影响的情况下运行该进程(当然,性能可能会下降一点) 问题答案: 如果您有权访问程序的源代码,则可以相对轻松地添加此功能。 参见配方576515: 去引用: 这提供了允许所有使用它的python程序在当前点被中断并通过普通python交互式控制台进行通信的代码。这允许调查本地,

  • AdoptoPenJDK的JRE11+和仅仅使用jlink并添加所有依赖项是一样的吗?