标签: assemblies

TFS构建:在程序集的"构建号"字段中包含分支名称

我希望能够查看一个程序集并快速确定它是由哪个分支构建的.

将TFS Build配置为在其创建的程序集的Build Number字段(或更合适的字段)中包含当前分支的名称的最佳方法是什么?

.net versioning tfs assemblies tfsbuild

8
推荐指数
1
解决办法
1793
查看次数

如何修复引用旧版(测试版).NET的程序集?

我正在尝试在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).

.net assemblies visual-studio

8
推荐指数
1
解决办法
1426
查看次数

模拟Microsoft DLL

我有一个引用Microsoft DLL(Exchange Web服务)的应用程序.在我的单元测试中,我想用Mock替换Microsoft DLL.

什么适用于其他DLL,不能使用此DLL,因为我得到一个例外

定位的程序集的清单定义与程序集引用不匹配

我验证它具有相同的程序集版本,但我看到Microsoft DLL是以数字方式签名的,因此它有一个PublicKeyToken.这可能是我的应用程序正在寻找的吗?一个类似签名的DLL?

有没有一种方法可以引用DLL而不需要它的publickeytoken?

谢谢

.net c# dll assemblies mocking

8
推荐指数
1
解决办法
1066
查看次数

当程序集用作子类时,CurrentDomain.AssemblyResolve不会触发

我正在尝试使用该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# assemblies embedded-resource

8
推荐指数
1
解决办法
4038
查看次数

clr.sll!StrongNameSignature验证CPU消耗

我有一个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应用程序安全方面的经验几乎为零,所以我正在寻找一些关于此问题的帮助.任何指针都会有所帮助.

提前致谢.

c# verification assemblies

8
推荐指数
1
解决办法
1841
查看次数

在引用调用程序集的运行时加载程序集

我的应用程序加载位于其执行路径中的所有库程序集,并对包含的类执行预先知道的方法.

我现在需要对引用我的应用程序集的程序集执行相同的操作.这是可能的吗?我应该注意哪些负面影响?

大师集会:

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)

c# assemblies runtime reference

8
推荐指数
1
解决办法
962
查看次数

使用[assembly:]进行log4net配置

我很好奇以下行如何在程序集中配置log4net:

[assembly: log4net.Config.XmlConfigurator(Watch=true)]
Run Code Online (Sandbox Code Playgroud)

我猜这个在运行时调用"main()"之前的某个时间调用,但是什么时候发生这种情况,有什么影响呢?是否有其他框架/库使用此程序集属性来加载这样的初始上下文?做这样的事情是否有任何优点/缺点,而不是在main()中调用"Configure"方法?

c# configuration log4net assemblies

7
推荐指数
1
解决办法
7147
查看次数

如何让.NET首先在本地文件夹中查找程序集而不是GAC?

据我所知,.NET运行时将始终首先在GAC中查找引用的程序集,然后在本地文件夹中查找.Web.Config中是否有一个可以反转此顺序的设置?

.net asp.net assemblies gac

7
推荐指数
1
解决办法
2098
查看次数

扫描具有特定接口的.NET程序集的DLL - 一些DLL抛出R6034!

我有一个程序需要在其主机上发现插件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当前未加载到进程空间?]

.net c# reflection assemblies

7
推荐指数
1
解决办法
4422
查看次数

加载由Roslyn编译器生成的程序集

我正在使用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)

c# assemblies roslyn

7
推荐指数
2
解决办法
7269
查看次数