WebAPI 和 ILMerge(又名自托管单个 exe)
WebAPI and ILMerge (aka self-hosted single exe)
我尝试使用 Web API 构建一个单一可执行的自托管应用程序。
我开始使用 OWIN 和 katana,但最终无法将它们合并。
所以我做了一个非常小的示例项目,没有 OWIN 和武士刀,只有 Web API。
在我的输出文件夹中,我得到了这些文件:
- Newtonsoft.Json.dll
- System.Net.Http.Formatting.dll
- System.Web.Http.dll
- System.Web.Http.SelfHost.dll
当然还有控制台应用程序本身,在这种情况下:
- WebAPI_self_hosted.exe
如果我将所有 5 个文件复制到不同的机器,一切正常。
当我尝试对它们进行 ILMerge 时,出现以下错误:
ILMerge.Merge: ERROR!!: Duplicate type 'System.Net.Http.HttpRequestMessageExtensions' found in
assembly 'System.Web.Http.SelfHost'. Do you want to use the /alllowDup option?
at ILMerging.ILMerge.MergeInAssembly(AssemblyNode a, Boolean makeNonPublic, Boolean targetAssemblyIsComVisible)
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
请原谅,如果这个问题没有真正达到 Whosebug 的标准,但我在过去两天尝试了很多(甚至是 ilrepack),现在,我很感谢每一个提示:-)
另请参阅此 post 并附上项目:
存在重复类型,因此您需要配置 ILMerge 以正确处理它们,例如使用 /allowDup 选项。错误消息说明了一切。
免责声明:这不是原始答案
对于那些使用 MSBuild ILMerge 任务 (https://ilmergemsbuild.codeplex.com/) 的人来说,要忽略重复类型,ILMerge.props 文件的值应为“*”(忽略所有类型)
<ILMergeAllowDuplicateType>*</ILMergeAllowDuplicateType>
来源:
我尝试使用 Web API 构建一个单一可执行的自托管应用程序。 我开始使用 OWIN 和 katana,但最终无法将它们合并。 所以我做了一个非常小的示例项目,没有 OWIN 和武士刀,只有 Web API。
在我的输出文件夹中,我得到了这些文件:
- Newtonsoft.Json.dll
- System.Net.Http.Formatting.dll
- System.Web.Http.dll
- System.Web.Http.SelfHost.dll
当然还有控制台应用程序本身,在这种情况下:
- WebAPI_self_hosted.exe
如果我将所有 5 个文件复制到不同的机器,一切正常。
当我尝试对它们进行 ILMerge 时,出现以下错误:
ILMerge.Merge: ERROR!!: Duplicate type 'System.Net.Http.HttpRequestMessageExtensions' found in
assembly 'System.Web.Http.SelfHost'. Do you want to use the /alllowDup option?
at ILMerging.ILMerge.MergeInAssembly(AssemblyNode a, Boolean makeNonPublic, Boolean targetAssemblyIsComVisible)
at ILMerging.ILMerge.Merge()
at ILMerging.ILMerge.Main(String[] args)
请原谅,如果这个问题没有真正达到 Whosebug 的标准,但我在过去两天尝试了很多(甚至是 ilrepack),现在,我很感谢每一个提示:-)
另请参阅此 post 并附上项目:
存在重复类型,因此您需要配置 ILMerge 以正确处理它们,例如使用 /allowDup 选项。错误消息说明了一切。
免责声明:这不是原始答案
对于那些使用 MSBuild ILMerge 任务 (https://ilmergemsbuild.codeplex.com/) 的人来说,要忽略重复类型,ILMerge.props 文件的值应为“*”(忽略所有类型)
<ILMergeAllowDuplicateType>*</ILMergeAllowDuplicateType>
来源: