OwinBuilder.GetAppStartup 错误"Could not load file or assembly"- 如何找到调用程序集的位置?
OwinBuilder.GetAppStartup error "Could not load file or assembly"- how to find where assembly is called?
我已将 Microsoft.Owin.Host.SystemWeb 添加到现有的 Asp.Net Web 表单项目(以使用 Azure Active Directory 身份验证)并获取
[FileNotFoundException: Could not load file or assembly
'PostSharp.Sdk, Version=2.1.0.0, Culture=neutral,
PublicKeyToken=b13fd38b8f9c99d7' or one of its dependencies. The
system cannot find the file specified.]
System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken,
IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs,
Int32 methodInstCount, ObjectHandleOnStack type) +0
System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module,
Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext,
RuntimeTypeHandle[] methodInstantiationContext) +191
System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken,
Type[] genericTypeArguments, Type[] genericMethodArguments) +162
System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord
caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly,
RuntimeModule decoratedModule, MetadataToken decoratedToken,
RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[]
attributes, IList derivedAttributes, RuntimeType& attributeType,
IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean&
isVarArg) +148
System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule
decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount,
RuntimeType attributeFilterType, Boolean mustBeInheritable, IList
derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) +604
System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly
assembly, RuntimeType caType) +144
Owin.Loader.DefaultLoader.SearchForStartupAttribute(String
friendlyName, IList1 errors, Boolean& conflict) +189<br>
Owin.Loader.DefaultLoader.GetDefaultConfiguration(String friendlyName,
IList
1 errors) +68
Owin.Loader.DefaultLoader.LoadImplementation(String startupName,
IList1 errorDetails) +89 Owin.Loader.DefaultLoader.Load(String
startupName, IList
1 errorDetails) +30
Microsoft.Owin.Host.SystemWeb.OwinBuilder.GetAppStartup() +165
Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint() +37
System.Threading.LazyInitializer.EnsureInitializedCore(T& target,
Boolean& initialized, Object& syncLock, Func`1 valueFactory) +137
Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init(HttpApplication
context) +172
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr
appContext, HttpContext context, MethodInfo[] handlers) +618
System.Web.HttpApplication.InitSpecial(HttpApplicationState state,
MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr
appContext, HttpContext context) +402
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr
appContext) +343
据我所知,Owin.Loader.DefaultLoader.SearchForStartupAttribute 使用了反射,无法加载某些属性,但它没有报告它扫描了哪个属性以及它所在的位置。
我们的项目使用 PostSharp 进行缓存和日志记录,但(据我所知)我们使用的是 version="4.3.21" 并且一个属性指的是 "3.0.26.9",但无论如何应该重定向到 4.3。 21 由于
<bindingRedirect oldVersion="0.0.0.0-4.3.21.0" newVersion="4.3.21.0" />
我搜索了 "PostSharp.Sdk" 的源代码,但没有找到任何参考资料。
使用 JetBrain DotPeek 快速查看反汇编也没有显示对 PostSharp.Sdk 的任何引用。请注意 Version=2.1 非常旧。
有链接 http://support.sharpcrafters.com/discussions/problems/2275-postsharp-is-not-compatible-with-microsoftowinsecurity-latest-version and issue with PostSharp cannot find assembly for system.web.mvc, version=3.0.0.0 when no projects reference it,看起来很相似,但它们有相反的问题:PostSharp 无法解析 MVC 或 Owin dll。
谁能建议如何识别哪个属性(以及哪个 class)引用 PostSharp.Sdk?
我考虑自己做 SearchForStartupAttribute 所做的事情 - 扫描程序集以查找自定义属性并记录所有找到的内容。
有什么 better/more 简单的想法吗?
感谢开源,我找到了源代码
https://katanaproject.codeplex.com/SourceControl/latest#src/Owin.Loader/DefaultLoader.cs
并在本地复制 class(连同 DefaultLoader 使用的几个内部 classes)。当前代码仅忽略 CustomAttributeFormatException,我跟踪然后忽略所有错误
private Tuple<Type, string> SearchForStartupAttribute(string friendlyName, IList<string> errors, ref bool conflict)
foreach (var assembly in _referencedAssemblies)
{
object[] attributes;
try
{
attributes = assembly.GetCustomAttributes(inherit: false);
}
// catch (CustomAttributeFormatException)
// {
// continue;
// }
catch (Exception exc)
{
string message = "In " + assembly.ToString();
System.Diagnostics.Trace.WriteLine(message + " " + exc.ToString());
continue;
}
我从 global.asax public Global()
调用了 class
var loader = new Owin.Loader.Debug.DefaultLoader();
IList<string> errorDetauls = new List<string>();
loader.Load("Startup", errorDetauls);
它告诉我是哪个 DLL 导致了问题,我删除了引用。 DLL 引用了旧的未使用的 PostSharp 库,但直到现在才造成任何伤害。
SearchForStartupAttribute 扫描位于 bin 文件夹中的所有 DLL,并且容易出现任何问题,例如缺少引用 DLL。
我已提交建议 "DefaultLoader.SearchForStartupAttribute should be tolerant to unrelated errors"
我已将 Microsoft.Owin.Host.SystemWeb 添加到现有的 Asp.Net Web 表单项目(以使用 Azure Active Directory 身份验证)并获取
[FileNotFoundException: Could not load file or assembly 'PostSharp.Sdk, Version=2.1.0.0, Culture=neutral, PublicKeyToken=b13fd38b8f9c99d7' or one of its dependencies. The system cannot find the file specified.]
System.ModuleHandle.ResolveType(RuntimeModule module, Int32 typeToken, IntPtr* typeInstArgs, Int32 typeInstCount, IntPtr* methodInstArgs, Int32 methodInstCount, ObjectHandleOnStack type) +0
System.ModuleHandle.ResolveTypeHandleInternal(RuntimeModule module, Int32 typeToken, RuntimeTypeHandle[] typeInstantiationContext, RuntimeTypeHandle[] methodInstantiationContext) +191
System.Reflection.RuntimeModule.ResolveType(Int32 metadataToken, Type[] genericTypeArguments, Type[] genericMethodArguments) +162
System.Reflection.CustomAttribute.FilterCustomAttributeRecord(CustomAttributeRecord caRecord, MetadataImport scope, Assembly& lastAptcaOkAssembly, RuntimeModule decoratedModule, MetadataToken decoratedToken, RuntimeType attributeFilterType, Boolean mustBeInheritable, Object[] attributes, IList derivedAttributes, RuntimeType& attributeType, IRuntimeMethodInfo& ctor, Boolean& ctorHasParameters, Boolean& isVarArg) +148
System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeModule decoratedModule, Int32 decoratedMetadataToken, Int32 pcaCount, RuntimeType attributeFilterType, Boolean mustBeInheritable, IList derivedAttributes, Boolean isDecoratedTargetSecurityTransparent) +604 System.Reflection.CustomAttribute.GetCustomAttributes(RuntimeAssembly assembly, RuntimeType caType) +144
Owin.Loader.DefaultLoader.SearchForStartupAttribute(String friendlyName, IList1 errors, Boolean& conflict) +189<br> Owin.Loader.DefaultLoader.GetDefaultConfiguration(String friendlyName, IList
1 errors) +68
Owin.Loader.DefaultLoader.LoadImplementation(String startupName, IList1 errorDetails) +89 Owin.Loader.DefaultLoader.Load(String startupName, IList
1 errorDetails) +30
Microsoft.Owin.Host.SystemWeb.OwinBuilder.GetAppStartup() +165
Microsoft.Owin.Host.SystemWeb.OwinHttpModule.InitializeBlueprint() +37 System.Threading.LazyInitializer.EnsureInitializedCore(T& target, Boolean& initialized, Object& syncLock, Func`1 valueFactory) +137
Microsoft.Owin.Host.SystemWeb.OwinHttpModule.Init(HttpApplication context) +172
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +618
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) +402
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext) +343
据我所知,Owin.Loader.DefaultLoader.SearchForStartupAttribute 使用了反射,无法加载某些属性,但它没有报告它扫描了哪个属性以及它所在的位置。
我们的项目使用 PostSharp 进行缓存和日志记录,但(据我所知)我们使用的是 version="4.3.21" 并且一个属性指的是 "3.0.26.9",但无论如何应该重定向到 4.3。 21 由于
<bindingRedirect oldVersion="0.0.0.0-4.3.21.0" newVersion="4.3.21.0" />
我搜索了 "PostSharp.Sdk" 的源代码,但没有找到任何参考资料。
使用 JetBrain DotPeek 快速查看反汇编也没有显示对 PostSharp.Sdk 的任何引用。请注意 Version=2.1 非常旧。
有链接 http://support.sharpcrafters.com/discussions/problems/2275-postsharp-is-not-compatible-with-microsoftowinsecurity-latest-version and issue with PostSharp cannot find assembly for system.web.mvc, version=3.0.0.0 when no projects reference it,看起来很相似,但它们有相反的问题:PostSharp 无法解析 MVC 或 Owin dll。
谁能建议如何识别哪个属性(以及哪个 class)引用 PostSharp.Sdk?
我考虑自己做 SearchForStartupAttribute 所做的事情 - 扫描程序集以查找自定义属性并记录所有找到的内容。 有什么 better/more 简单的想法吗?
感谢开源,我找到了源代码 https://katanaproject.codeplex.com/SourceControl/latest#src/Owin.Loader/DefaultLoader.cs 并在本地复制 class(连同 DefaultLoader 使用的几个内部 classes)。当前代码仅忽略 CustomAttributeFormatException,我跟踪然后忽略所有错误
private Tuple<Type, string> SearchForStartupAttribute(string friendlyName, IList<string> errors, ref bool conflict)
foreach (var assembly in _referencedAssemblies)
{
object[] attributes;
try
{
attributes = assembly.GetCustomAttributes(inherit: false);
}
// catch (CustomAttributeFormatException)
// {
// continue;
// }
catch (Exception exc)
{
string message = "In " + assembly.ToString();
System.Diagnostics.Trace.WriteLine(message + " " + exc.ToString());
continue;
}
我从 global.asax public Global()
调用了 class var loader = new Owin.Loader.Debug.DefaultLoader();
IList<string> errorDetauls = new List<string>();
loader.Load("Startup", errorDetauls);
它告诉我是哪个 DLL 导致了问题,我删除了引用。 DLL 引用了旧的未使用的 PostSharp 库,但直到现在才造成任何伤害。
SearchForStartupAttribute 扫描位于 bin 文件夹中的所有 DLL,并且容易出现任何问题,例如缺少引用 DLL。 我已提交建议 "DefaultLoader.SearchForStartupAttribute should be tolerant to unrelated errors"