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. Ссылки, для которых сборки отсутствуют, будут отображаться с вопросительным знаком на желтом круге.
Снимок экрана со ссылочной сборкой, отсутствующей в той же папке, что и проверенная сборка
Снимок экрана со ссылкой на сборку в той же папке, что и проверенная сборка