我在VS2010中有一个C控制台程序,我想编辑/调试/构建为一个项目。也就是说,我想编写它并调试它就好像它是一个vanilla控制台exe,但让它产生一个副本作为副产品。我在SO(Making a C# project DLL and EXE)
上找到了以下信息DLL项目应具有所有可重用的代码。正常项目应该是您正在构建的应用程序,它将引用您可重用的DLL。这样,您可以在DLL项目中构建一个可用于任何未来项目的框架。
在SO的其他地方,我发现了这个:https://stackoverflow.com/questions/7054481/how-to-produce-a-mix-of-dll-and-exe-in-one-c-sharp-project
你可以引用一个.Net可执行文件,好像它是一个dll,但是你可以考虑将exe文件复制到一个同名的dll文件中...... 您可以使用项目的Visual Studio post-build事件自动执行此过程。这将在每次成功构建时处理创建dll副本: 复制“$(TargetPath)”“$(TargetDir)$(TargetName).dll”
似乎第一种选择意味着维护2个不同的项目。是否有理由这样做,而不是做第二篇文章建议的内容,只需复制我的exe整体并将扩展名从exe更改为dll?
答案 0 :(得分:0)
Hans Passant回答了这个问题,但我无法将其标记为已回答,因为这是一个评论。所以这是他的回答:
“这可能是托管语言,但不是C.本机DLL有不同的CRT启动代码。本机EXE不可重定位,不支持导出功能。更大的问题是,如果可能的话,您在main()函数中编写的内容。您无法在EXE项目的main()函数中编写。仅在测试导出函数时编写单元测试,因为这是使用DLL的任何代码唯一可用的函数。还要考虑创建静态库的第3个项目,您可以在DLL和EXE项目中链接它们“