c#类型在未引用的程序集中定义

问题描述 投票:0回答:1

我正在使用Microsoft.Owin 4.1进行dotnet MVC5项目。 Owin无法以I think it supposed to的方式工作,因此以为我可以调试owin源代码来克服它。

步骤是:

克隆aspnetkatana回购将我的项目引用的3个软件包添加到我的解决方案中(右键单击解决方案>添加>现有项目)

  • Microsoft.Owin
  • Microsoft.Owin.Security
  • Microsoft.Owin.Security.Cookies

最后将引用添加到我的项目中(右键单击我的项目>添加>引用)

[当我尝试构建解决方案时,它会引发错误,例如:

类型'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可以使用它们吗?

c# owin
1个回答
0
投票

要调试依赖项,您无需将项目链接为参考。您可以在单独的解决方案中打开项目并构建调试程序集(DLL和PDB),然后,如果您构建项目,则可以将调试二进制文件和源映射复制到构建输出文件夹中,然后进行调试,同时能够也逐步浏览项目参考。

例如,假设我要调试AutoMapper:

enter image description here

我的项目引用了Automapper nuget包:

enter image description here

我建立我的项目:

enter image description here

nuget版本(发行版)将被复制到输出:

enter image description here

然后用调试版本替换项目参考的发行版本:

enter image description here

现在使用调试器启动项目,您也应该也可以调试引用。 (VS将覆盖每个构建中的nuget程序集,因此您必须每次都复制它们)。

© www.soinside.com 2019 - 2024. All rights reserved.