1

我正在查看dotPeekSystem.Web.Http中的程序集,但看不到对Newtonsoft.Json

在此处输入图像描述

即使我知道它System.Web.Http.Results.JsonResult使用Newtonsoft.Json它的序列化程序不像它的System.Web.Mvc表亲。

using Newtonsoft.Json;
using System;
using System.IO;
using System.Net;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Http;

namespace System.Web.Http.Results
{
  /// <summary>
  /// Represents an action result that returns an <see cref="F:System.Net.HttpStatusCode.OK"/> response with JSON data.
  /// </summary>
  /// <typeparam name="T">The type of content in the entity body.</typeparam>
  public class JsonResult<T> : IHttpActionResult

现在我明白了,Newtonsoft.Json如果没有根据依赖项安装,在大多数情况下,这将来自 Nuget,WebGrease但我不明白为什么它没有出现在参考文献中。

它确实在 AssemblyInfo 文件中显示为注释:

using System;
using System.Diagnostics;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;

// Assembly System.Web.Http, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// MVID: F99F496C-B0D2-49C1-A945-C1FCABCE1695
// References: mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// References: System.Net.Http, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
// References: System.Net.Http.Formatting, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// References: System.Xml, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// References: System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// References: System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
// References: Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed
// References: System.ComponentModel.DataAnnotations, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
// References: System.Runtime.Serialization, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

[assembly: AssemblyTrademark("")]
[assembly: NeutralResourcesLanguage("en-US")]
[assembly: AssemblyConfiguration("")]
[assembly: ComVisible(false)]
[assembly: CLSCompliant(true)]
[assembly: AssemblyCompany("Microsoft Corporation.")]
[assembly: AssemblyMetadata("Serviceable", "True")]
[assembly: AssemblyProduct("Microsoft ASP.NET MVC")]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Extension]
[assembly: TargetFramework(".NETFramework,Version=v4.5", FrameworkDisplayName = ".NET Framework 4.5")]
[assembly: SatelliteContractVersion("5.2.3.0")]
[assembly: AssemblyCopyright("© Microsoft Corporation. All rights reserved.")]
[assembly: AssemblyFileVersion("5.2.30128.0")]
[assembly: AssemblyInformationalVersion("5.2.3-30128 (0e974218e12a67d4b1f25422119e40cfe6953e46)")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyTitle("System.Web.Http")]
[assembly: Guid("70cecdcd-46f5-492b-9e1f-1d9a947f1fd1")]
[assembly: InternalsVisibleTo("System.Web.Http.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
[assembly: InternalsVisibleTo("System.Web.Http.Integration.Test, PublicKey=0024000004800000940000000602000000240000525341310004000001000100b5fc90e7027f67871e773a8fde8938c81dd402ba65b9201d60593e96c492651e889cc13f1415ebb53fac1131ae0bd333c5ee6021672d9718ea31a8aebd0da0072f25d87dba6fc90ffd598ed4da35e44c398c454307e8e33b8426143daec9f596836f97c8f74750e5975c64e2189f45def46b2a2b1247adc3652bf5c308055da9")]
[assembly: AssemblyVersion("5.2.3.0")]

那么这是一个设置,还是一个 dotPeek 怪癖,或者关于程序集的构建方式,还是其他什么?

4

2 回答 2

1

我知道这是一个老问题,但是在研究这个问题时,我看到了这个未回答的帖子,所以我想我会回答的。它不显示在 dotPeek 中的原因是因为 dotPeek不显示对它无法加载的程序集的引用

您可以通过创建一个包含两个程序集的简单项目来相当简单地重现这一点,其中一个程序集引用另一个程序集。如果将 DLL 复制到一个文件夹中,并在 dotPeek 中查看引用程序集,它将显示引用的程序集。从 dotPeek 中删除它,从文件夹中删除引用的程序集并再次查看引用程序集 - 您将看到引用已从 dotPeek 中消失(除了AssemblyInfo.cs您上面提到的)。

FWIW,由于这个问题,我已经转向使用 ILSpy,因为它不会遇到同样的问题。

于 2015-09-02T16:06:44.780 回答
1

由于这个问题的答案提到了 DotPeek 没有显示所有引用的原因是因为它找不到引用的程序集。

DotPeek 2016.2 不再是这种情况。不存在装配的参考将使用黄色圆圈上的问号显示

引用的程序集的屏幕截图与检查的程序集不存在于同一文件夹中

与检查的程序集位于同一文件夹中的引用程序集的屏幕截图

于 2016-09-03T15:43:00.460 回答