查找程序集的Public-Key-Token的最简单方法是什么?
我能想到的最简单的方法是简单的右键单击,获取公钥,但是这个功能不存在,可能有一个Visual Studio扩展吗?
我正在使用Visual Studio 2010,如果有可用的扩展名.
我正在使用Visual Studio 2017,我正在尝试创建.Net Standard 1.5库并在.Net 4.6.2 nUnit测试项目中使用它.
我收到以下错误...
无法加载文件或程序集'System.Runtime,Version = 4.1.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一.该系统找不到指定的文件.
我尝试过以下方法:
这是一个错误吗?有解决方法吗?任何帮助表示赞赏.
如果公钥标记在旧版本上为空并且在较新版本上设置,是否可以在引用的程序集的不同版本之间执行程序集绑定重定向?
例如,我有两个组件......
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) 我经常使用的VS解决方案包括一个可执行项目(控制台应用程序,Web应用程序)和许多可执行文件引用的类库项目.
在使用NuGet并安装软件包时,通常会app.config为每个项目创建一个文件,通常只包含合并重定向列表,这些重定向合并了引用程序集的版本.有时候会有一些特定于第三方库的内容(比如Entity Framework配置部分),但是现在让我们把它放在一边.
当我构建解决方案并使用主可执行项目的二进制文件时,我会看到构建输出中的所有类库项目程序集以及相应的*.config文件(app.config文件AssemblyName.config在构建时重命名为).
启动主可执行文件时,类库程序集的配置文件是否有效?或者只是app.config在这种情况下具有效果的可执行文件?如果在某些类库项目上设置了一些绑定重定向,并在主可执行项目上设置了一些不同的绑定重定向,这些如何组合,哪些优先?
我试图在网上研究这个,从我读过的内容来看,它看起来像app.config非可执行程序集的文件是无用的(关于绑定重定向).有人可以确认这一点或详细说明这个主题吗?
如果是这样的话,app.config如果它们只包含绑定重定向,那么实际上不希望NuGet在类库中创建这些文件吗?我觉得NuGet不应该为类库项目创建那些绑定重定向,因为它只会增加对实际应用的设置的混淆.
我在这个主题上发现了这些现有的Stack Overflow问题,但是他们接受的答案实际上是矛盾的,即使它们被标记为彼此重复.
第一个问题的接受答案提到app.config文件实际上是在编译时使用的,这意味着它们可能有效.像MSDN和MSBuild源代码这样的来源被引用作为它在编译时使用的证明.不幸的是,我对MSBuild的熟练程度不足以理解它是如何被使用的,以及它是否真的是一个有效的参数.
在Windows 2003和Windows XP中,您可以右键单击程序集(.dll)转到属性,单击版本选项卡,然后您将看到3个不同的版本号:程序集版本,文件版本和产品版本.
如果您使用相同的文件并在Windows 2008中查看其属性,则只能看到文件版本和产品版本.
有没有办法在Windows Vista和更新版本(没有第三部分工具)中查看.NET程序集的程序集版本?
我正在使用 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) 我正在使用一个使用 .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
版本详情:
我不知道问题是什么或为什么会发生这种情况,但我很确定这与版本问题有关,因此欢迎任何帮助。
我使用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 肯定是),为什么需要这样的绑定。
.net ×5
c# ×4
nuget ×3
app-config ×1
asp.net ×1
assemblies ×1
dll ×1
json.net ×1
msbuild ×1
public-key ×1
windows-7 ×1