我正在使用Microsoft.Owin 4.1进行dotnet MVC5项目。 Owin无法以I think it supposed to的方式工作,因此以为我可以调试owin源代码来克服它。
步骤是:
克隆aspnetkatana回购将我的项目引用的3个软件包添加到我的解决方案中(右键单击解决方案>添加>现有项目)
最后将引用添加到我的项目中(右键单击我的项目>添加>引用)
[当我尝试构建解决方案时,它会引发错误,例如:
类型'IOwinContext'是在未引用的程序集中定义的。您必须添加对程序集“ Microsoft.Owin,版本= 3.0.1.0,文化=中性,PublicKeyToken = 31bf3856ad364e35”的引用。
VS将行app.CreatePerOwinContext
标记为错误源。
public partial class Startup {
public void ConfigureAuth(IAppBuilder app) {
app.CreatePerOwinContext(AppUserContext.Create);
...
另一个错误抱怨具有相同依赖项的4.1.0.0版本(实际上是我所拥有的版本,因此此版本相当令人困惑)
我的问题是,为什么该构建器未将owin源视为v4.1.0.0程序集,以及在这种情况下如何克服不同版本的需求。我的意思是我知道,如果使用nuget引用会发生这种情况,我可以使用bindingredirect
,但不知道如何处理包含源代码的情况。这也引起了一些混乱,即当nuget包含依赖项时,不需要引入bindingredirect
。 (见下文)
Sidenote:在我开始尝试将这些项目作为源包括在内之前,它们是作为nuget包添加的。没有引入bindingredirect
,并且该构建已执行,没有任何错误或警告。 (在介绍owin项目之前,显然已从csproj文件中删除了此部分)
。csproj中的相关部分
<Reference Include="Microsoft.Owin, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.4.1.0\lib\net45\Microsoft.Owin.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.Security, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.Security.4.1.0\lib\net45\Microsoft.Owin.Security.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Owin.Security.Cookies, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Owin.Security.Cookies.4.1.0\lib\net45\Microsoft.Owin.Security.Cookies.dll</HintPath>
</Reference>
编辑:我也在寻找答案的是如何告诉(如果可能的话)在当前解决方案中寻找瞬态依赖关系的生成器。澄清:在我的解决方案中,已通过nuget引入了Microsoft.AspNet.Identity
对。这些程序包取决于Microsoft.Owin
和子程序包。我可以以某种方式告诉构建者在编译这些软件包之后Microsoft.AspNet.Identity
可以使用它们吗?