相关疑难解决方法(0)

获取.Net程序集的PublicKeyToken

查找程序集的Public-Key-Token的最简单方法是什么?

我能想到的最简单的方法是简单的右键单击,获取公钥,但是这个功能不存在,可能有一个Visual Studio扩展吗?

我正在使用Visual Studio 2010,如果有可用的扩展名.

.net visual-studio-2010 visual-studio public-key

155
推荐指数
10
解决办法
14万
查看次数

Visual Studio 2017 - 无法加载文件或程序集"System.Runtime,Version = 4.1.0.0"或其依赖项之一

我正在使用Visual Studio 2017,我正在尝试创建.Net Standard 1.5库并在.Net 4.6.2 nUnit测试项目中使用它.

我收到以下错误...

无法加载文件或程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件.

我尝试过以下方法:

  1. 参考Std库作为项目参考.错误:给我以前的错误.
  2. 为我的Std库创建一个NuGet pkg并引用它.错误:类型是System.String,期望System.String.这是因为System.Runtime最终被项目引用,并且它具有所有标准类型的定义.
  3. 参考NuGet pkg NetStandard.Library.错误:给我与#相同的错误("类型是System.String,期望System.String").注意:在我这样做之前,我清除了项目中的所有NuGet包,然后只添加了nUnit和NetStandard.Library包(安装了45个其他包).

这是一个错误吗?有解决方法吗?任何帮助表示赞赏.

.net visual-studio-2017 .net-standard-1.5

89
推荐指数
7
解决办法
7万
查看次数

.Net程序集绑定重定向与不同的公钥标记

如果公钥标记在旧版本上为空并且在较新版本上设置,是否可以在引用的程序集的不同版本之间执行程序集绑定重定向?

例如,我有两个组件......

System.Web.Mvc,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null

System.Web.Mvc,Version = 2.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35

以下程序集绑定重定向是否应该在Asp.Net web.config中工作...

System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
Run Code Online (Sandbox Code Playgroud)

.net asp.net assemblybinding publickeytoken

55
推荐指数
2
解决办法
2万
查看次数

在app.config中为类库做绑定重定向会做什么吗?

我经常使用的VS解决方案包括一个可执行项目(控制台应用程序,Web应用程序)和许多可执行文件引用的类库项目.

在使用NuGet并安装软件包时,通常会app.config为每个项目创建一个文件,通常只包含合并重定向列表,这些重定向合并了引用程序集的版本.有时候会有一些特定于第三方库的内容(比如Entity Framework配置部分),但是现在让我们把它放在一边.

当我构建解决方案并使用主可执行项目的二进制文件时,我会看到构建输出中的所有类库项目程序集以及相应的*.config文件(app.config文件AssemblyName.config在构建时重命名为).

启动主可执行文件时,类库程序集的配置文件是否有效?或者只是app.config在这种情况下具有效果的可执行文件?如果在某些类库项目上设置了一些绑定重定向,并在主可执行项目上设置了一些不同的绑定重定向,这些如何组合,哪些优先?

我试图在网上研究这个,从我读过的内容来看,它看起来像app.config非可执行程序集的文件是无用的(关于绑定重定向).有人可以确认这一点或详细说明这个主题吗?

如果是这样的话,app.config如果它们只包含绑定重定向,那么实际上不希望NuGet在类库中创建这些文件吗?我觉得NuGet不应该为类库项目创建那些绑定重定向,因为它只会增加对实际应用的设置的混淆.


我在这个主题上发现了这些现有的Stack Overflow问题,但是他们接受的答案实际上是矛盾的,即使它们被标记为彼此重复.

第一个问题的接受答案提到app.config文件实际上是在编译时使用的,这意味着它们可能有效.像MSDNMSBuild源代码这样的来源被引用作为它在编译时使用的证明.不幸的是,我对MSBuild的熟练程度不足以理解它是如何被使用的,以及它是否真的是一个有效的参数.

任何人都可以描述一个示例场景来证明带有绑定重定向的类库的app.config可以做什么吗?

.net c# app-config nuget assembly-binding-redirect

43
推荐指数
2
解决办法
3416
查看次数

我怎样才能在Windows Vista和更新版本中看到.NET程序集的汇编版本(WIndows 7,2008)?

在Windows 2003和Windows XP中,您可以右键单击程序集(.dll)转到属性,单击版本选项卡,然后您将看到3个不同的版本号:程序集版本,文件版本和产品版本.

如果您使用相同的文件并在Windows 2008中查看其属性,则只能看到文件版本和产品版本.

有没有办法在Windows Vista和更新版本(没有第三部分工具)中查看.NET程序集的程序集版本?

.net assemblies windows-vista file-properties windows-7

29
推荐指数
2
解决办法
2万
查看次数

为什么我的解决方案使用错误的 dll 版本构建?

我正在使用 Microsoft.SQLServer.Types 来使用空间类型。我正在从 Nuget 安装 11.x 版。

当我使用 Visual Studio (2013) 发布解决方案时,它将版本 11.x 复制到 bin 文件夹。

但是,当我使用 MSBuild 进行构建时,它会将版本 10.x 复制到 bin 文件夹中。

任何想法为什么?

这是引用 dll 的 csproj 文件的一部分:

<Reference Include="Microsoft.SqlServer.Types, Version=11.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
    <HintPath>..\packages\Microsoft.SqlServer.Types.11.0.1\lib\net20\Microsoft.SqlServer.Types.dll</HintPath>
</Reference>
Run Code Online (Sandbox Code Playgroud)

此外,复制本地设置为 true。

另外,我在该项目的 web.config 中有这个:

<dependentAssembly>
    <assemblyIdentity name="Microsoft.SqlServer.Types" publicKeyToken="89845dcd8080cc91" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-11.0.0.0" newVersion="11.0.0.0" />
</dependentAssembly>
Run Code Online (Sandbox Code Playgroud)

c# msbuild nuget

5
推荐指数
1
解决办法
879
查看次数

DLL版本不匹配问题

* 问题简介

我正在使用一个使用 .Net 框架的软件来执行一些任务。

我们正在尝试使用 Mailkit.dll 文件,但在使用它时我们遇到以下消息:

内部:无法执行代码阶段,因为代码阶段引发异常:无法加载文件或程序集“System.Memory,Version=4.0.1.2,Culture=neutral,PublicKeyToken=cc7b13ffcd2ddd51”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(HRESULT 异常:0x80131040)

从我到目前为止得出的结论来看,Mailkit.dll 依赖于 Mimekit.dll,而 Mimekit.dll 又依赖于 System.memory.dll,类似的东西。

Mailkit.dll > Mimekit.dll > System.Memory.dll

版本详情:

  • 机器上安装的.Net框架:4.7.3190
  • 应用程序使用的.Net框架:4.7
  • Mailkit.dll版本:3.4.1
  • Mimekit.dll 版本:3.4.1
  • 应用程序文件夹中的System.Memory.dll版本:4.6.28619.01

我不知道问题是什么或为什么会发生这种情况,但我很确定这与版本问题有关,因此欢迎任何帮助。

c# dll

2
推荐指数
1
解决办法
2008
查看次数

为什么这个项目需要程序集绑定重定向?

我使用https://icanhasdot.net来分析我一直在试验的示例项目的 NuGet 依赖项。结果如下: 在此处输入图片说明

该图未显示特定版本,但我的目标是该项目的 .NET Framework 4.5,并基于 Visual Studio 中的“管理 Nuget”视图,我知道所有 NuGet 包(即图中的所有绿色方块)在我的项目中需要 Newtonsoft.Json >= 6.0.8,例如:

在此处输入图片说明

我想在我的项目中使用稍新版本的 Newtonsoft.Json,所以我添加了 8.0.2 版本。由于这绝对是 >= 6.0.8,我不希望这会导致问题。但是,当我运行该程序时,我立即收到一个 System.IO 异常,指出未找到 Newtonsoft.Json 6 的某些内容。

我已经通过向Newtonsoft.Json 的较新版本添加一个带有程序集绑定重定向(程序集绑定重定向:如何和为什么?)的 app.config 文件解决了这个问题,这解决了这个问题。但是,我不明白如果我的项目所依赖的所有 NuGet 包都需要 >= 6.0.8(8.0.2 肯定是),为什么需要这样的绑定。

c# json.net nuget assembly-binding-redirect

1
推荐指数
1
解决办法
1483
查看次数