为了发布一个完整的 C# Asp.NET Web Forms 项目,我成功地执行了发布过程,但是在 roslyn 文件夹下创建了 4 个 .exe 文件,它们不被托管公司接受。我怎样才能创建一个 dll 文件而不是一个 exe 文件?
Properties - Application / Output Type = Class Library
Properties - Application / Startup Object = (Not set)
Properties - Build - Output / Generate Serialization assembly = Off
Properties - Build - Output - Advanced / Debugging information = None
我在 ChatGPT 的帮助下将当前设置带到了这一点,但它不断地创建一个 exe 文件。
我会做一个测试发布到本地文件夹。这样您就可以 100% 测试/检查/查看是否包含 .exe 文件(不应该包含)。
但是,如果经过上面简单的测试呢?
然后我建议您“删除”Roslyn 编译器扩展。
所以,项目->管理nuget包。
你想删除这2个:
现在,打开 bin 文件夹,然后关闭项目。
删除该 bin 文件夹中的所有内容。
重新打开,并进行重建解决方案。
作为建议的步骤,您最好创建一个名为 Mycode 的新文件夹,并将所有代码模块(如果有的话)从 App_Code 移动到名为 MyCode 的文件夹中。
这样做的原因是,当您构建 hte 网站应用程序时,所有内容都被编译并仅作为 .dll 输出到 bin 文件夹。然而,根据需要,app_code 中的某些文件仍将由 IIS 编译,而您不希望这种情况发生。
您还想确保 MyCode 中的每个代码文件都设置为:
但是,您很可能没有或没有使用 Roslyn 编译器,因此您可能不需要上述内容。
如前所述,在执行上述任何操作之前,先发布到本地文件夹,例如 c: esting\web。
查看生成的发布网站,并检查 bin 文件夹。
删除了 rosylin 编译器扩展,则不应存在 .exe 文件。
并且,您“可能”会收到一些编译错误,在大多数情况下,如果您的源代码包含一些“假设”或“依赖”这些编译器扩展的代码。
出于这个非常重要的原因,我建议您将 app_code 文件移出该文件夹,因为在重新构建时,您很可能会在构建时错过一些编译错误,因为 app_code 中的代码通常可以而且仍然会是由 IIS 编译,而不是 VS,这是您想避免的问题。