我在我的项目中使用PostSharp 4.2.22.0和Owin 3.0.1。
编译时出现以下错误:
未处理的异常(4.2.22.0,postsharp-net40-x86-srv.exe,CLR
4.0.30319.394271,Release):PostSharp.Sdk.CodeModel.AssemblyLoadException:找不到程序集 'microsoft.owin.security,version = 2.1.0.0,culture = neutral, 公钥= 31bf3856ad364e35' 。 [版本不匹配]
但PostSharp是否与Owin有关?为什么Owin版本对PostSharp很重要,这是两个完全不同的包。
答案 0 :(得分:8)
此错误通常出现在引用旧版本程序集的项目中,并在web.config文件中具有绑定重定向。我想你的web.config中有这样的东西:
TAG POS=1 TYPE=SELECT FORM=* ATTR=ID:select2-drop CONTENT=$1139
PostSharp默认不处理web.config / app.config文件。通过将PostSharpHostConfigurationFile MSBuild属性设置为web.config文件的路径,可以强制PostSharp加载绑定重定向。
您可以通过将这些行添加到csproj文件来实现:
<dependentAssembly>
<assemblyIdentity name="microsoft.owin.security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
<bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
</dependentAssembly>
如果不设置PostSharpHostConfigurationFile属性,则应在PostSharp 4.3中修复此不便之处。但目前4.3还不是一个稳定版本。
修改:代码已更新(缺少结束&#39;&gt;&#39;)