Tag: 程序集

Visual Studio添加与dll同名的可执行文件

在Visual Studio 2008中,我添加了WinScp.dll(在项目根目录中)作为参考,并立即有一个黄色图标。 在编译时: 找不到类型或命名空间名称’WinSCP’(您是否缺少using指令或程序集引用?) 已解决的文件具有错误的图像,没有元数据,或者无法访问。 无法加载文件或程序集“E:… \ winscp.exe”或其中一个依赖项。 该模块应该包含一个程序集清单。 经过一个小时的挫折,我发现如果我将WinSCP.exe作为项目文件(也在项目根目录中)删除,一切都编译得很好。 奇怪的!!!! 问题是我的输出目录中需要WinSCP.dll和WinSCP.exe。 我该怎么办? 编辑 :我知道有一些解决方法,如重命名文件或更改路径。 我最初改名为exe; 现在我重命名dll(感谢@Michael),因为它不需要我在我的代码中指定重命名的exe。 但是为什么首先出现问题呢? WinSCP.dll和WinSCP.exe是两个不同的文件。 这是Visual Studio中的错误,还是我不明白的dll / exe错综复杂?

我可以在构建.net程序集时指定模块版本ID(MVID)吗?

我们有一些共享程序集,每晚都会自动构建。 如果没有对源进行任何更改,我希望程序集二进制文件与以前的版本完全相同。 但是,程序集之间似乎存在细微差别。 我已经做了一些努力来确定两个版本之间的区别。 我使用ildasm生成il版本,并比较生成的文本版本。 唯一的区别(在IL中)是模块中的MVID(随机guid)。 一些谷歌搜索告诉我模块版本ID由编译器生成,因此可以确定构建源,即使其他所有内容都相同。 这个MVID在相同代码的构建之间创建了一个人工差异,并且对所得到的程序集进行了人工检查。 是否可以将MVID提供给C#编译器?

为什么我得到System.IO.FileLoadException:无法加载文件或程序集,大约每周一次在我的ASP.Net网站上?

我有一个相当简单的内部ASP.Net网站,每周大约加载一次Microsoft.Practices.EnterpriseLibrary.Data dll。 这是Exception消息: System.IO.FileLoadException: Could not load file or assembly ‘Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null’ or one of its dependencies. Access is denied. File name: ‘Microsoft.Practices.EnterpriseLibrary.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null’ at foobar.Intranet.Logic.Data.UserDB.SelectByUserName(String userName) at foobar.Intranet.Logic.Info.User.ValidateUser(String userName) in F:\Development\foobar\foobar\foobar.Intranet.Logic\Info\User.cs:line 130 at Login.ValidateUser(String username, String password) in e:\foobar\foobar.Intranet\Login.aspx.cs:line 32 === Pre-bind state information === LOG: User = Unknown LOG: […]

多次调用Assembly.Load的副作用

如果多次调用Assembly.Load会导致任何副作用吗? 例如 for (int i = 0; i < N; i++) { Assembly.Load(assemblyStrongName); // ……. } 这一次装载组件不是吗? 我之前和之后都检查过AppDomain.CurrentDomain.GetAssemblies() ,它似乎已经加载了一次(应该如此),但是它有副作用吗? 在长时间运行的服务器应用程序(运行数月/年而不重启)上面是否会导致任何问题?

获取程序集路径C#

我试图知道一个DLL的路径….几个网站说我要使用System.Reflection.Assembly.GetExecutingAssembly()。位置但它返回C:\ Windows \ Microsoft.Net …等路径。 .. \ File.Dll 我想要c:\ MyProyect \ MiWeb \ Bin \ File.Dll 任何帮助?

WPF程序集引用丢失 – 项目仍在构建中

我试图在我的解决方案中使用WPF的动态数据显示库。 我在我的项目中添加了对DynamicDataDisplay.dll的引用。 我还在.xaml中添加了一个命名空间,如下所示: xmlns:d3=”http://research.microsoft.com/DynamicDataDisplay/1.0″ 当我尝试从动态数据显示库添加元素时,Intellisense没有帮助我。 当我在.xaml中输入类似的内容时: Visual Studio会将其标记为错误,其中包含以下文字: The type ‘d3:ChartPlotter’ was not found. Verify that you are not missing an assembly reference and that all referenced assemblies have been built. 但奇怪的是它仍然编译。 有人可以告诉我我做错了什么吗? 下面是一个示例代码,它编译得很好,但在设计器中显示错误: 编辑: 我尝试了像Merlyn Morgan-Graham建议的名称空间声明,但它仍然不起作用。 发生了另一个错误 Unable to load the metadata for assembly ‘DynamicDataDisplay’. This assembly may have been downloaded from the web. […]

从经典ASP访问.NET程序集

我一直在尝试访问我在经典ASP中使用创建的.NET程序集 dim foo set foo = Server.CreateObject(“TestAssembly.MyClass”) 问题是我收到了一个错误: Server object error ‘ASP 0177 : 800401f3’ Server.CreateObject Failed /test.asp, line 4 Invalid class string 我已按照文章中的说明使用gacutil和regasm注册了程序集(TestAssembly.dll): 用 另一个问题引用的.NET程序集替换旧的经典ASP COM组件 。 它提供了两种安装组件的方法,我尝试了两种方法,但无济于事。 让这项工作很棒,因为它可以让我逐步将经典的ASP站点迁移到.NET

预加载所有组件(JIT)

我们正在第一次加载一些重型UI屏幕。 我们的项目分为一个主要的可执行文件和几个DLL文件。 DLL文件还可以包含UI屏幕,这些屏幕在第一次加载时很慢。 有没有办法(在代码中)我们可以预加载所有引用的程序集,以避免JIT编译命中? 我知道有一种名为NGen的工具。 是否有可能在开发环境中运行NGen,以便我们可以立即看到它的影响? 但理想情况下,我们希望从代码中预加载引用的程序集。 使用C#.NET 3.5和DevExpress作为UI组件。

无法加载文件或程序集Microsoft.ServiceModel.DomainServices.Hosting

我在我的本地环境中加载了一个应用程序。 这是我inheritance的代码库,根本没有让它工作。 此时,当我在浏览器中导航到“http://test.myapp.com:75/”时,收到以下错误: 描述:处理为此请求提供服务所需的配置文件时发生错误。 请查看下面的具体错误详细信息并相应地修改配置文件。 分析器错误消息:无法加载文件或程序集“Microsoft.ServiceModel.DomainServices.Hosting,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其依赖项之一。 该系统找不到指定的文件。 我已检查并validation我已加载RIA数据服务。 我可以在C:\ Program Files(x86)\ Microsoft SDKs \ RIA Services \ v1.0 \ Libraries \ Server中看到这些文件。 有趣的是,此目录中的程序集未加载到我的GAC中。 我已经尝试将它们加载到我的GAC中,但是,我无法将程序集拖到C:\ Windows \ assembly中,并且在我尝试时没有显示错误。 我究竟做错了什么?

从内存而不是磁盘向CompilerParameters ReferenceAsAsmblies提供程序集?

我有一个CompilerParameters对象,用于提供Microsoft.CSharp.CSharpCodeProvider对象和从中派生的ICodeCompiler对象。 一切正常,我可以动态编译代码。 我的问题是引用的程序集。 现在,我只需将System.Reflection.Assembly.GetExecutingAssembly().GetReferencedAssemblies()所有程序集添加到编译器参数的ReferencedAssemblies 。 这适用于硬盘上的文件。 但是我有一个在内存中而不在磁盘上的程序集。 当我尝试引用它时,我得到一个FileNotFoundException ,我期望它,因为它试图添加一个不存在的路径。 那么如何将实际的Assembly对象传递给CompilerParameters.ReferencedAssemblies ? 我从2006年开始在网上看过几篇post,之前说这根本不可能。 我希望.net 3.5和.net 4.0已经添加了对这类内容的支持,但我不确定。 仅供参考,我使用的是.NET 4.0 此外,我现在正在程序空间的byte []创建一个临时文件,然后将该文件加载到程序集中。 我知道编译器会在后台执行此操作,但我相信它也会自行清理。 如果我能这样做会很棒: CompilerParameters.ReferencedAssemblies.Add(Assembly a)