我希望能够查看一个程序集并快速确定它是由哪个分支构建的.
将TFS Build配置为在其创建的程序集的Build Number字段(或更合适的字段)中包含当前分支的名称的最佳方法是什么?
我正在尝试在Visual Studio 2010中编译项目.它在Visual Studio 2008中运行良好,但2010年出现以下错误:
无法解析主要引用"TiS.Core.eFlowAPI",因为它对.NET Framework程序集"mscorlib,Version = 2.0.3600.0,Culture = neutral,PublicKeyToken = b77a5c561934e089"具有间接依赖性,其具有更高版本"2.0 .3600.0"比当前目标框架中的版本"2.0.0.0".
我已经找到了MDbgCore.dll的罪魁祸首.包含此程序集(在依赖关系链中),它正在寻找mscorlib 2.0.3600.0.
经过一些研究后,它看起来像是.NET 2.0的测试版.
我该如何解决这个问题?我无权访问此第三方DLL的代码(即TiS.Core.eFlowAPI).
我有一个引用Microsoft DLL(Exchange Web服务)的应用程序.在我的单元测试中,我想用Mock替换Microsoft DLL.
什么适用于其他DLL,不能使用此DLL,因为我得到一个例外
定位的程序集的清单定义与程序集引用不匹配
我验证它具有相同的程序集版本,但我看到Microsoft DLL是以数字方式签名的,因此它有一个PublicKeyToken.这可能是我的应用程序正在寻找的吗?一个类似签名的DLL?
有没有一种方法可以引用DLL而不需要它的publickeytoken?
谢谢
我正在尝试使用该CurrentDomain.AssemblyResolve事件来加载标记为嵌入式资源的DLL.我的问题,具体来说,是因为我试图将程序集用作子类,如下所示:
#define BROKEN
using System;
using System.Reflection;
using TestCompanyInc;
namespace TestConsole
{
#if BROKEN
// This is how I NEED to use it
class Program : SubClass
#else
// This is only here as a test to make sure I wired
// CurrentDomain.AssemblyResolve correctly
class Program
#endif
{
static int Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += (sender, eventArgs) =>
{
string resourceName = Assembly.GetExecutingAssembly()
.GetName().Name
+ "." + new AssemblyName(eventArgs.Name).Name + ".dll";
Console.WriteLine("About to lookup {0}", resourceName);
using (var …Run Code Online (Sandbox Code Playgroud) 我有一个C#(.NET 4.0)WinForm应用程序,它不断地与基于Linux的应用程序通信,每秒几次从它接收一些数据.当我看到' clr.sll!StrongNameSignatureVerification '为此应用程序消耗大量CPU时,我一直在微调这个WinForm应用程序以减少它的高CPU使用率.我使用Process Explorer找到了这个.一些谷歌搜索告诉我'clr.sll!StrongNameSignatureVerification'正在进行中,因为CLR正试图验证这是否是一个强命名的程序集(我不想要CLR).
在我对此进行进一步研究之后,我尝试使用Microsoft SDK中的sn.exe来跳过此WinForm应用程序的签名验证.我收到一个错误,说这不是一个强名称的汇编.我并没有感到惊讶,因为我没有签署此应用程序或不记得设置任何应该调用CLR来验证此应用程序的签名.
我在.net应用程序安全方面的经验几乎为零,所以我正在寻找一些关于此问题的帮助.任何指针都会有所帮助.
提前致谢.
我的应用程序加载位于其执行路径中的所有库程序集,并对包含的类执行预先知道的方法.
我现在需要对引用我的应用程序集的程序集执行相同的操作.这是可能的吗?我应该注意哪些负面影响?
大师集会:
public abstract class TaskBase
{
public abstract void DoWork();
}
LoadAssemblyFromFile("Assembly0001.dll");
Assembly0001.Task1.DoWork();
Run Code Online (Sandbox Code Playgroud)
儿童大会:
public sealed class Task1: MasterAssembly.TaskBase
{
public override void DoWork { /* whatever */ }
}
Run Code Online (Sandbox Code Playgroud) 我很好奇以下行如何在程序集中配置log4net:
[assembly: log4net.Config.XmlConfigurator(Watch=true)]
Run Code Online (Sandbox Code Playgroud)
我猜这个在运行时调用"main()"之前的某个时间调用,但是什么时候发生这种情况,有什么影响呢?是否有其他框架/库使用此程序集属性来加载这样的初始上下文?做这样的事情是否有任何优点/缺点,而不是在main()中调用"Configure"方法?
据我所知,.NET运行时将始终首先在GAC中查找引用的程序集,然后在本地文件夹中查找.Web.Config中是否有一个可以反转此顺序的设置?
我有一个程序需要在其主机上发现插件DLL.
它通过枚举(相当大)路径中的所有DLL来实现此目的.此路径包含许多内容,包括本机DLL.
foreach (var f in Directory.EnumerateFiles(@"c:\Program Files", "*.dll", SearchOption.AllDirectories))
{
try
{
var assembly = Assembly.LoadFile(f);
var types = assembly.GetTypes();
foreach (var type in types)
{
if (type.GetInterface("My.IInterface") != null)
{
plugins.Add(f);
break;
}
}
assembly = null;
}
catch (Exception e)
{
}
}
Run Code Online (Sandbox Code Playgroud)
如果我的扫描程序遇到MS运行时DLL(例如,msvcm80.dll),我得到一个无法捕获的运行时错误R6034:"应用程序试图错误地加载C运行时库." 该窗口阻止程序的执行.我不想要这个DLL(显然); 有没有办法从这种情况中获得优雅的错误?
[相关问:是否有一种有效的(例如非异常)方法来确定DLL是否是.NET程序集,如果该DLL当前未加载到进程空间?]
我正在使用Roslyn编译器生成Greeter.dll.尝试加载DLL文件时出现问题.
这是代码:
using System;
using Roslyn.Compilers;
using Roslyn.Compilers.CSharp;
using System.IO;
using System.Reflection;
using System.Linq;
namespace LoadingAClass
{
class Program
{
static void Main(string[] args)
{
var syntaxTree = SyntaxTree.ParseCompilationUnit(@"
class Greeter
{
static void Greet()
{
Console.WriteLine(""Hello, World"");
}
}");
var compilation = Compilation.Create("Greeter.dll",
syntaxTrees: new[] { syntaxTree },
references: new[] {
new AssemblyFileReference(typeof(object).Assembly.Location),
new AssemblyFileReference(typeof(Enumerable).Assembly.Location),
});
Assembly assembly;
using (var file = new FileStream("Greeter.dll", FileMode.Create))
{
EmitResult result = compilation.Emit(file);
}
assembly = Assembly.LoadFile(Path.Combine(Directory.GetCurrentDirectory(), @"Greeter.dll"));
Type type = assembly.GetType("Greeter"); …Run Code Online (Sandbox Code Playgroud) assemblies ×10
c# ×7
.net ×5
asp.net ×1
dll ×1
gac ×1
log4net ×1
mocking ×1
reference ×1
reflection ×1
roslyn ×1
runtime ×1
tfs ×1
tfsbuild ×1
verification ×1
versioning ×1