c#类型是在未引用的程序集中定义的
我正在使用Microsoft.Owin 4.1开发一个.net MVC5项目。Owin的工作方式不一样,所以我认为我可以通过调试进入Owin源代码来解决这个问题 这些步骤是: 克隆回购协议c#类型是在未引用的程序集中定义的,c#,owin,C#,Owin,我正在使用Microsoft.Owin 4.1开发一个.net MVC5项目。Owin的工作方式不一样,所以我认为我可以通过调试进入Owin源代码来解决这个问题 这些步骤是: 克隆回购协议 将我的项目引用的3个包添加到我的解决方案中(右键单击解决方案>添加>现有项目) Microsoft.Owin Microsoft.Owin.Security Microsoft.Owin.Security.Cookies 最后添加了对我的项目的引用(右键单击我的项目>添加>引用) 当我尝试构建解决方案时,
将我的项目引用的3个包添加到我的解决方案中(右键单击解决方案>添加>现有项目)
- Microsoft.Owin
- Microsoft.Owin.Security
- Microsoft.Owin.Security.Cookies
app.CreatePerOwinContext
标记为错误源
公共部分类启动{
public void ConfigureAuth(IAppBuilder应用程序){
app.CreatePerOwinContext(AppUserContext.Create);
...
另一个错误是关于同一依赖项的版本4.1.0.0(实际上是我的版本,所以这个版本很混乱)
我的问题是为什么owin源代码没有被构建者视为v4.1.0.0程序集,以及在这种情况下如何克服不同的版本需求。我的意思是,我知道如果NuGet引用出现这种情况,我可以使用bindingredirect
,但不知道如何处理包含源代码的情况在NuGet包含依赖项时,消除了一些混淆,即不需要引入bindingredirect
。(见下文)
旁注:在我开始尝试将这些项目作为源代码之前,它们被添加为NuGet包。没有引入bindingredirect
,并且在没有任何错误或警告的情况下执行了构建。(在引入owin项目之前,此部分显然已从csproj文件中删除)
csproj中的相关部分
..\packages\Microsoft.Owin.4.1.0\lib\net45\Microsoft.Owin.dll
..\packages\Microsoft.Owin.Security.4.1.0\lib\net45\Microsoft.Owin.Security.dll
..\packages\Microsoft.Owin.Security.Cookies.4.1.0\lib\net45\Microsoft.Owin.Security.Cookies.dll
编辑:
此外,我正在寻找的答案是如何辨别(如果可能的话)在当前解决方案中查找暂时依赖项的生成器。说明:在我的解决方案中,通过NuGet引入了两个
Microsoft.AspNet.Identity
。这些包依赖于Microsoft.Owin
和子包。在编译完这些包之后,我是否可以告诉生成器rosoft.AspNet.Identity可以使用它们吗?要调试依赖项,您不需要将项目链接为引用。您可以在单独的解决方案中打开项目并生成调试程序集(DLL和PDB)然后,如果构建项目,可以将调试二进制文件和源映射复制到构建输出文件夹中,然后对其进行调试,同时也可以单步执行项目引用
例如,假设我想调试AutoMapper:
我的项目引用Automapper nuget包:
我构建我的项目:
nuget生成(版本)将复制到输出:
然后将项目引用的发布版本替换为调试版本:
现在,使用调试器启动项目,您也应该能够调试引用。(VS将覆盖每个生成上的nuget程序集,因此您每次都必须复制它们).要调试依赖项,您不需要将项目链接为引用。您可以在单独的解决方案中打开项目并生成调试程序集(DLL和PDB)然后,如果构建项目,可以将调试二进制文件和源映射复制到构建输出文件夹中,然后对其进行调试,同时也可以单步执行项目引用 例如,假设我想调试AutoMapper: 我的项目引用Automapper nuget包: 我构建我的项目: nuget生成(版本)将复制到输出: 然后将项目引用的发布版本替换为调试版本:
现在,使用调试器启动项目,您也应该能够调试引用。(VS将覆盖每个生成上的nuget程序集,因此您每次都必须复制它们).我经常在针对不同版本的.NET Framework时看到这个错误。您引用的是Owin的net45版本。您的项目是否针对更高版本,如4.6?@RyanThomas是的,您让我正确地认识到了这一点。在将所有项目设置为.NET Framework 4.5后,以及在大量更新软件包之后…-重新安装我f最终编译!请创建一个答案,我会将其标记为已接受的答案!谢谢!@RyanThomas Ehh抱歉,这是一个误报。生成成功,因为更新包安装了暂时依赖项,因此它重新引入了Microsoft.Owin包。所有项目都设置为.net framework 4.5,但我仍然有相同的错误消息。如果您进入web.config,它是否显示正确的版本?如果不显示,请删除配置中的引用并重新生成。另一种可能解决此问题的方法是转到您的库并从中删除引用。我建议您从中阅读。我经常看到针对不同版本的.NET Framework的错误。您正在引用net45版本的Owin。您的项目是否针对更高的目标,如4.6?@RyanThomas是的,您让我找到了正确的方向。在将所有项目设置为.net framework 4.5之后