我注意到核心.NET程序集的PublicKey = 00000000000000000400000000000000.它不仅比sn.exe允许生成(最小384位)更短,而且还有很多零.
如何用如此精美的公钥生成签名密钥?
我能做到这一点:
return Assembly.GetEntryAssembly().GetName().Name;
Run Code Online (Sandbox Code Playgroud)
要么
return Path.GetFileNameWithoutExtension(Application.ExecutablePath);
Run Code Online (Sandbox Code Playgroud)
既能得到所需要的应用程序名称始终?如果是这样,这是获取应用程序名称的更标准方法?如果它仍然是一个不赢的局面,有什么比一种方法更快的速度吗?或者还有其他正确的方法吗?
谢谢.
虽然我知道这已被"回答"了大约5000万次,但我还没有找到解决问题的答案,所以我觉得我别无选择,只能再问一遍.
以前的建议: MVC中的Razor页面给出了System.Web.Helpers找不到的编译错误
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Run Code Online (Sandbox Code Playgroud)
我已将此添加到我的web.config中,但问题仍然存在.
我只有一个项目,targetFramework是4.0.
我安装了Microsoft.Web.Helpers 1.15(2.0与MVC3不兼容.)Microsoft.Web.Helpers.dll位于我的bin文件夹中.
奇怪的是,有Microsoft.Web.Helpers和System.Web.Helpers.在这种情况下我需要System.Web.Helpers,因为我在我的代码中使用了WebImage.
例如,我有以下项目结构:
Root\Core\Application.exe
Root\Modules\Assembly.dll
Root\Modules\Icons\Icon.png
Run Code Online (Sandbox Code Playgroud)
我的Application.exe加载Assembly.dll.Assembly.dll包含带有Image控件的WPF UserControl.Icon.png不是嵌入式资源,它是本地文件(Build:Content).
我尝试了Image Control的Source-Property中的每个可能的URI,但它从不显示图像:-(
<Image Source="Icons\Icon.png" />
<Image Source="pack://application:,,,/Icons\Icon.png" />
<Image Source="pack://application:,,,/Assembly;component/Icons/Icon.png" />
Run Code Online (Sandbox Code Playgroud)
等等
URI如何看起来像?
我需要有关如何在C#代码中正确添加程序集的帮助.
我启动一个空白项目并尝试运行下面的简单代码.但是引用了错误.我知道默认情况下system.dll包含在references文件夹下.
那为什么还要抱怨"'System.Configuration没有被引用'?" 我错过了一些手动步骤吗?如果是这样我该怎么办?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Configuration;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
HttpWebRequestElement ae = new HttpWebRequestElement();
ae.UseUnsafeHeaderParsing = false;
}
}
}
Run Code Online (Sandbox Code Playgroud)
"System.Configuration.ConfigurationElement"类型在未引用的程序集中定义.您必须添加对程序集'System.Configuration,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'的引用.
谢谢你的帮助
我正在创建一些工具,执行NUnit等多个操作.在这个工具里面,我打开.dll程序集并调用方法形成它来运行一些测试.
一切都好,直到我需要重新加载.dll,程序重启.我们的想法是,当工具运行时,我们将所需的程序集复制到一些临时文件夹并从那里调用.如果我需要重新加载,我将另一个复制到另一个临时文件夹,并尝试从另一个文件夹加载新复制并加载到以前的程序集对象
ExecutingAssembly = Assembly.LoadFrom(AssemblyFullPath);
Run Code Online (Sandbox Code Playgroud)
但我的问题是,在我将AssemblyFullPath更改为新的并调用Assembly.LoadFrom之后,它只返回刚装入的第一次加载而不是第二次加载!也许问题是我们无法加载具有不同版本的多个程序集?解决办法是什么?
我在一个文件夹中有很多程序集.只有部分标记为延迟签名.
现在,我必须签署所有标记延迟签名的集会.
如何识别哪个程序集标记为延迟签名,哪个不是?
我的问题很简单,但遗憾的是我找不到任何答案.
使用MEF,我可以在类库程序集中指定一些内部导出和导入,如下所示:
[Export]
internal class SomeExport
{ }
[ModuleExport(typeof(SomeModule))]
internal class SomeModule : IModule
{
[ImportingConstructor]
internal SomeModule(SomeExport instance)
{ }
}
Run Code Online (Sandbox Code Playgroud)
我的CompositionContainer位于主EXE程序集中,但不知何故它设法SomeExport在类库程序集中实例化对象,以便我可以使用它.通常,我的内部类库类型不应该从EXE程序集中访问,但不知何故我创建了我的实例.
它是如何工作的?
经过大量搜索和跟踪面包屑之后,似乎要添加一个NON ASP.NET程序集作为对ASP.Net项目(不在同一解决方案中)的引用,必须使用DNU WRAP.
我尝试通过将CD写入解决方案目录并输入以下行来实现此目的
dnu -v wrap --configuration release -i code/access/access.csproj
Run Code Online (Sandbox Code Playgroud)
响应告诉我,我缺少NuGet包并"启用NuGet包恢复".我已经(并且已经重新检查)已经这样做了.
在互联网上搜索'dnu wrap'在GitHub上返回了2个点击,更有趣的是在解决方案级别需要global.json的dnu换行的侧面讨论.但是,我的一个ASP.Net解决方案没有global.json文件.
我的问题是1)在安装了VS 2015 RC的Windows系统上,让dnu wrap正常工作所需的步骤是什么?2)在什么条件下必须重做dnu包装?
我有一个.NET应用程序似乎有一些依赖版本在调试和作为安装的发布应用程序运行之间发生变化.我将专注于Castle.Core汇编以获取我的详细信息,但同样的问题也会出现在其他几个问题上.我正在使用的NuGet包需要Castle.Core作为依赖项(我的问题的所有情况都与源自NuGet的程序集有关,以防它重要).
在Visual Studio中,当我使用Castle.Core依赖项安装NuGet包时,一切都运行得很好,包括Debug和Release配置.我可以看到Castle.Core项目引用是引用版本3.3.0.0.但是,当我使用InstallShield打包Release配置生成的所有内容并安装应用程序(所有程序集都位于同一程序目录中)时,我收到此运行时错误:
无法加载文件或程序集'Castle.Core,Version = 3.2.0.0,Culture = neutral,PublicKeyToken = 407dd0808d44fbdc'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
NuGet包将其对Castle.Core的依赖性列为(≥3.2.0.0&& <4.0.0.0).3.2.0.0和3.3.0.0都满足这些条件.
如果我手动将Castle.Core降级到3.2.0.0,我的项目参考显示它确实降级了.但是当我在Visual Studio中运行该项目时,我得到:
无法加载文件或程序集'Castle.Core,Version = 3.3.0.0,Culture = neutral,PublicKeyToken = 407dd0808d44fbdc'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
内部例外:
无法加载文件或程序集'Castle.Core,Version = 3.2.0.0,Culture = neutral,PublicKeyToken = 407dd0808d44fbdc'或其依赖项之一.定位的程序集的清单定义与程序集引用不匹配.(HRESULT异常:0x80131040)
但是,如果我将其打包到安装程序并将其作为已安装的应用程序启动,则可以正常运行.
对我来说,感觉就像将程序集打包到安装程序中会导致依赖版本发生变化.我无法想象会出现这种情况,但我无法提出更好的解释.
任何人都可以解释这里发生了什么,以及我如何解决它?
.net-assembly ×10
.net ×6
c# ×4
asp.net-core ×1
composition ×1
csproj ×1
dependencies ×1
installer ×1
mef ×1
public-key ×1
reference ×1
reflection ×1
strongname ×1
uri ×1
version ×1
winforms ×1
wpf ×1
xaml ×1