我遇到了一个恼人的错误。我们有一个解决方案,大约由大约 50 个单独的项目组成,所有项目都正在构建并作为 dll 引用主项目。在 Visual Studio 2017 中一切正常,没有 Intellisense 错误,项目构建也没有遇到任何错误。
尽管我可以成功构建并运行该项目,但 Visual Studio 2019 显示缺少程序集引用:
我试图克服这个错误:
所有这些步骤我都没有成功。有谁知道我还可以尝试什么?
c# intellisense .net-assembly visual-studio visual-studio-2019
我们正处于将 ac# Winforms 应用程序从 .NET Framework 转换为 .NET 6 的开始阶段。我们可以在 .NET 6 中构建和运行项目,但是当涉及到动态加载的程序集时,我们遇到了问题。我们可以加载程序集,但尝试访问其中的自定义类会返回 null。我在两个较小的项目中重新创建了这个场景作为示例。
解决方案 1/项目 1 - 要加载到主应用程序中的程序集的代码。这是一个创建 TestAssembly.dll 的类库
namespace Custom.TestAssembly
{
public class TestClass : CallingModule
{
public override object GetValue()
{
return "Hello World";
}
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案 2/项目 1 - 这是主应用程序解决方案中的项目和类。这是一个创建 Custom.TestAssembly.dll 的类库
namespace Custom.TestAssembly
{
public class CallingModule
{
public virtual object? GetValue()
{
return null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
解决方案 2/项目 2 - 已在表单上放置一个按钮。单击它时,应该加载程序集,事实确实如此。但是,尝试从程序集中提取类始终返回 NULL。
Form1.cs
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Reflection.Emit; …
Run Code Online (Sandbox Code Playgroud) 这是GAC的位置吗?
C:\Windows\Microsoft.NET\assembly\GAC_MSIL
Run Code Online (Sandbox Code Playgroud)
如果是这样,那又是什么C:\Windows\assembly
?
我有一个Console
应用程序和Class Library
一个解决方案.每当我从控制台应用程序引用类库时它都会找到它,但在构建解决方案之后它无法找到类型.
虽然CopyLocal
设置为true
但引用的程序集未复制!
我有一个包含一些项目和外部exe的解决方案.当我构建时,我想将exe复制到我的构建文件夹,以及构建项目并将我的dll复制到构建文件夹.有没有办法运行这个外部exe作为我的后期构建事件?所以,当我在visual studio中运行我的解决方案时,我想基本上将外部exe设置为启动项目.这是可能的(或类似的东西)?
是否可以搜索与特定搜索条件匹配的嵌入文件(例如*.xml).
我的代码目前(适用于我知道路径的文件)
var fileName = "PATH.sample.xml";
var assembly = Assembly.GetExecutingAssembly();
Stream stream = assembly.GetManifestResourceStream(fileName);
StreamReader reader = new StreamReader(stream);
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(reader.ReadToEnd());
Run Code Online (Sandbox Code Playgroud) Tl; dr版本: 我遇到异常:System.IO.FileLoadException:无法加载文件或程序集'DotNetOpenAuth.AspNet,版本4. 0 .0.0 ...
有点沮丧的是,msft在新的MVC4项目模板中使用了很多静态类和auth方法.想要将所有成员资格/身份验证功能包装到实现接口的类中,以便我可以模拟单元测试.
经过几个挣扎的晚上,我决定从头开始,所以我删除了所有DotNetOpenAuth*程序集引用和nuget package.config引用.我已经删除了对Micrsoft.Aspnet.WebPages.OAuth.dll的所有引用.
重新安装软件包: 我对解决方案中需要dll引用的三个项目运行install-package dotnetopenauth.aspnet.
解决方案不会构建,因为我的包装器有一个包装的方法:Microsoft.AspNet.WebPages.OAuth(.dll).OAuthWebSecurity.RegisteredClientData因此我需要对这个assy的引用,所以我运行install-package microsoft.aspnet.webpages .oauth反对同样的三个项目.
解决方案构建,但是当我运行引用Microsoft.AspNet.WebPages.OAuth(.dll).OAuthWebSecurity.RegisteredClientData的单元测试时,我得到一个运行时异常: System.IO.FileLoadException:无法加载文件或程序集'DotNetOpenAuth.AspNet,Version 4. 0 .0.0 ...
在所有三个项目,该组件中的引用参考文献4.1 .0.0,一样的DotNetOpenAuth.AspNet assemblyIdentity在我的web.config.
我正在使用resharper来运行测试,测试是nunit风格.
最后这里是我在fuslogvw中看到的粘贴.显然有些东西正在寻找4. 0 .0.0但我无法弄清楚它是做什么或做什么的(我有几次删除了这个转储中引用的临时数据文件夹):
***** 装配活页夹日志条目(11/13/2012 @ 10:04:54 PM) ************
操作失败.绑定结果:hr = 0x80131040.没有可用的描述.
程序集管理器从以下位置加载:C:\ Windows\Microsoft.NET\Framework64\v4.0.30319\clr.dll在可执行文件C:\ Program Files(x86)\ JetBrains\ReSharper\v7.0\Bin\JetBrains.ReSharper.TaskRunner下运行.CLR4.MSIL.exe ---下面是详细的错误日志.
===预绑定状态信息=== LOG:User = i7\dave LOG:DisplayName = DotNetOpenAuth.AspNet,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = 2780ccd10d57b246(完全指定)LOG:Appbase = file: ///C:/SVN/trunk/SoAndSo45/SoAndSo.Com.Tests.Unit/bin/Debug LOG:Initial PrivatePath = NULL …
我得到一个程序集的名称如下:
String fullName = Assembly.GetAssembly(typeof(CP.Proj.ILogger)).FullName;
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
CP.Proj,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null
有没有办法只获得程序集名称"CP.Proj"
,没有版本和其他信息?
如何获取没有命名空间或文化或公钥令牌的程序集名称(只有名称); typeof(MyClass).AssemblyQualifiedName --->给我一个完全限定的名称,我只想要程序集名称而不是限定名称
我想只使用其uri从任何程序集(同一个应用程序)加载任何资源.两个程序集都是同一应用程序的一部分.
因为我希望能够从任何程序集加载,所以我不能使用未在通用Dll中定义的"App"或"Application".
我认为部分或答案正在使用: System.Reflection.Assembly.GetCallingAssembly().GetManifestResourceStream(path);
但我找不到如何从uri中正确查找/提取/解析程序集?
笔记:
到目前为止(约3小时后),使用反射器后,似乎使用静态System.Windows.Application.GetResourceStream(uri).Stream具有资源缓存等优点.这很糟糕,因为它被挂钩到WPF(System.windows).我正在寻找一种更好的方法(不依赖于任何特定的UI框架)来完成这项工作.
.net-assembly ×10
c# ×7
reflection ×3
.net ×1
.net-6.0 ×1
dll ×1
file ×1
gac ×1
intellisense ×1
nuget ×1
reference ×1
resources ×1
uri ×1
winforms ×1