gpt4 book ai didi

c# - 在命令行上告诉 OwinHost 如何在项目外部使用 cwd 加载 OwinSetup 类

转载 作者:太空宇宙 更新时间:2023-11-03 12:25:12 25 4
gpt4 key购买 nike

如果您的 cwd 在您的项目根目录中,OwinHost 就很棒,即

c:/code/myprojectroot> ../location/of/owinhost.exe

当您从项目根目录工作时,OwinHost 似乎非常乐意自动神奇地找到您的类,只要您在项目某处有 [assembly: OwinStartup(typeof(MyOwinStartupClass))] 即可。

但是,如果您尝试将此作为构建脚本的一部分或 cwd 不是项目根目录的其他内容来执行此操作,则 OwinHost 对您来说不是那么好,命令行参数意味着您可以告诉它您的项目所在的位置:

c:/not/project/root> location/of/owinhost.exe -d "path/to/project/root"

但是这样做,它会不断地告诉你下流的谎言,例如:

默认端口:5000 (http://localhost:5000/)
错误:System.EntryPointNotFoundException
尝试加载应用程序时出现以下错误。
- 找不到包含 OwinStartupAttribute 的程序集。

所以我尝试了以下方法:

  • c:/not/project/root> location/of/owinhost.exe -d "path/to/project/root"MyOwinStartupClass
  • c:/not/project/root> location/of/owinhost.exe -d "path/to/project/root"MyNamespace.MyOwinStartupClass
  • c:/not/project/root> location/of/owinhost.exe -d "path/to/project/root"MyNamespace.MyOwinStartupClass,MyAssemblyName
  • c:/not/project/root> location/of/owinhost.exe -d "path/to/project/root/bin/Debug"MyOwinStartupClass
  • c:/not/project/root> location/of/owinhost.exe -d "path/to/project/root/bin/Debug"Namespace.MyOwinStartupClass
  • c:/not/project/root> location/of/owinhost.exe "path/to/project/root"
  • c:/not/project/root> location/of/owinhost.exe "path/to/project/root/bin/Debug/my-assembly-with-owin-startup-in.dll"

没有任何效果,就像 OwinHost 的唯一工作方式是,如果您以 CWD 作为您的项目根目录运行它,那么任何人都可以阐明我哪里出错了吗?因为我给了它目录(-d 指定了应用程序的目标目录)并且我尝试手动给它 DLL,给它上面的任何排列。

所以我不知道任何 Owin-Whisperers 可以告诉我正确的咒语让它做我想做的事吗?

最佳答案

查看 OwinHost source ,它有以下行:

ResolveAssembliesFromDirectory(
Path.Combine(Directory.GetCurrentDirectory(), "bin"));

请注意它使用 Directory.GetCurrentDirectory()

这会调用一个具有 AssemblyResolve 事件的方法

    public static void ResolveAssembliesFromDirectory(string directory)
{
var cache = new Dictionary<string, Assembly>();
AppDomain.CurrentDomain.AssemblyResolve +=
(a, b) =>
{

所以,它似乎总是从当前目录开始搜索。这可能是您遇到问题的原因。

修复:提交修复 OwinHost 的补丁! (或)自己编写 Console app to Host

关于c# - 在命令行上告诉 OwinHost 如何在项目外部使用 cwd 加载 OwinSetup 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45350198/

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