dotPeek не показывает все ссылки

Я смотрю на System.Web.Http сборка в dotPeek, и я не вижу ссылки на 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, или что-то о том, как строится сборка, или что-то еще?

2 ответа

Решение

Я знаю, что это старый вопрос, но, изучая этот вопрос, я увидел этот пост без ответа, поэтому подумал, что отвечу на него. Причина, по которой он не отображается в dotPeek, заключается в том, что dotPeek не показывает ссылки на сборки, которые он не может загрузить.

Вы можете воспроизвести это довольно просто, создав простой проект с двумя сборками, где одна ссылается на другую. Если вы скопируете библиотеки DLL в папку и просмотрите ссылочную сборку в dotPeek, она покажет указанную сборку. Удалите его из dotPeek, удалите ссылочную сборку из папки и снова просмотрите ссылочную сборку - и вы увидите, что ссылка исчезла из dotPeek (за исключением AssemblyInfo.cs как вы упомянули выше).

FWIW, из-за этой проблемы я перешел на использование ILSpy, потому что это не страдает от той же проблемы.

В ответе на этот вопрос упоминается, что причина, по которой DotPeek не отображал все ссылки, заключалась в том, что он не мог найти ссылочные сборки.

Это больше не относится к DotPeek 2016.2. Ссылки, для которых сборки отсутствуют, будут отображаться с вопросительным знаком на желтом круге.

Снимок экрана со ссылочной сборкой, отсутствующей в той же папке, что и проверенная сборка

Снимок экрана со ссылкой на сборку в той же папке, что и проверенная сборка

Другие вопросы по тегам