标签: .net-assembly

VB.NET:获取程序集的命名空间

我有一个嵌入式资源(包含在执行程序集中),可以使用以下命令获取它:

Assembly.GetExecutingAssembly().GetManifestResourceStream("<MyNamespace>.<File>")
Run Code Online (Sandbox Code Playgroud)

如果程序集的命名空间发生变化,我必须找到字符串中包含的所有位置。为了避免这种情况,我想动态获取名称空间。是否有可能获取程序集的名称空间或是否可以使用固定值?

感谢您的任何回复。

vb.net namespaces embedded-resource .net-assembly

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

我的项目可以引用针对较低版本 .net 框架的程序集吗?

我在.net平台上的时间不长。不到两个月。我遇到了这个“无法从程序集中加载类型 blah.blah.blah。

因此,我一直在与多种资源进行斗争,包括此处差异帖子中的建议。仍然没有运气。但最接近的建议似乎表明某些参考文献可能针对较低版本的 .net。实际上,有许多针对不同版本的参考,并且在其中一些参考中,还有更多可能针对不同版本的依赖程序集。

我一直在努力使用 VS 2010(.net 4.0) 转换我拥有源代码的一些程序集,整个内容几乎让我不知所措。

所以我沮丧地问:我的参考组件(及其依赖项)和我的项目目标必须相同版本吗?

.net c# asp.net .net-assembly

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

在运行时编译程序集并将dll保存在文件夹中

这是我的代码:

Microsoft.CSharp.CSharpCodeProvider provider = new CSharpCodeProvider();
ICodeCompiler compiler = provider.CreateCompiler();
CompilerParameters compilerparams = new CompilerParameters();
compilerparams.GenerateInMemory = false;
CompilerResults results = compiler.CompileAssemblyFromSource(compilerparams, code);

if (results.Errors.HasErrors)
{
    StringBuilder errors = new StringBuilder("Compiler Errors :\r\n");
    foreach (CompilerError error in results.Errors )
    {
        errors.AppendFormat("Line {0},{1}\t: {2}\n", 
               error.Line, error.Column, error.ErrorText);
    }
    throw new Exception(errors.ToString());
}
else
{
    return results.CompiledAssembly;
}
Run Code Online (Sandbox Code Playgroud)

如何将创建的dll保存到我自己的特定文件夹中?当我调试时,不知何故,程序集位置位于'AppData/Local/Temp /'文件夹中.

c# runtime compilation .net-assembly

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

在C#中使用第三方代码

我想用下面的代码在我的程序(http://sshnet.codeplex.com/)SFTP

我下载它并放入我的C#项目所在的文件夹中.我还添加了代码:

using Renci.SshNet;
using Renci.SshNet.Sftp;
Run Code Online (Sandbox Code Playgroud)

现在我需要告诉Visual Studio在哪里查找它.我尝试了"添加引用",但我下载的内容仅包含扩展名为.cs no .dll的文件.

接下来我该怎么办?

我读了几本关于C#的书(由Troelsen和Michaelis撰写),但所有这些合理的业务对我来说并不清楚.

c# .net-assembly

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

从另一个程序集中调用方法

我有包含 MyMethod() 的 Tools.dll 文件,如下所示:

    public void MyMethod()
    {
        global::System.Windows.Forms.MessageBox.Show("Sth");
    }
Run Code Online (Sandbox Code Playgroud)

现在,我尝试从另一个文件运行此汇编方法:

        System.Reflection.Assembly myDllAssembly = System.Reflection.Assembly.LoadFile(@"PATH\Tools.dll");
 myDllAssembly.GetType().GetMethod("MyMethod").Invoke(myDllAssembly, null); //here we invoke MyMethod.
Run Code Online (Sandbox Code Playgroud)

运行后发生“System.NullReferenceException”。它说“对象引用未设置到对象的实例。”

那么我该如何解决它?

我确信这个 .dll 构建事实没有问题。

注意:汇编代码来自:http://www.codeproject.com/Articles/32828/Using-Reflection-to-load-unreferenced-assemblies-a

c# reflection .net-assembly

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

MS SQL Server 检查已注册程序集的存在

在数据库中,我通常使用基于 XML 的拆分函数版本。后来通过一些研究,我创建了 split 函数的 Assembly CLR 版本。

在数据库更新过程(修补程序)中,我删除所有用户函数,修补数据库,然后再次创建用户函数。由于补丁过程,它将再次恢复拆分功能的 XML 版本。

到目前为止,我检查了 MSDN,但找不到任何提示:如何检查 DLL 是否已注册为数据库内的程序集?

在 Management Studio 中,我可以打开数据库 -> 程序能力 -> 程序集,并且可以看到 DLL(如果已注册)。但我想以编程方式执行此操作,如果 DLL 可用,则在 CREATE FUNCTION 上使用 CLR 版本,否则我想使用 XML 版本来确保拆分函数在任何情况下都可用。

有谁知道这是否可能?

t-sql sql-server .net-assembly

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

动态加载和卸载 c# 程序集到 appdomain

有很多类似的问题。但他们都岁了,今天不工作(不再?)。

所以这是我的问题:我想将 ac# 程序集加载到内存中,并找出它是否包含与我想使用的接口匹配的类型。如果程序集包含此类类型,我会在主应用程序中引用并使用它。如果没有,我想卸载 dll,然后能够删除文件(从我的主应用程序或在应用程序运行时手动删除)。

我的第一个实现只是省略了 appdomain 方法,但它有效(不删除或替换程序集文件)。然后我尝试按照各种示例中的描述加载程序集。但是没有我能够从磁盘中删除不需要的程序集文件。

当程序集在应用程序中被引用时,根本无法卸载和删除它们,或者我做错了什么。这是我最后尝试的:

using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Windows.Forms;
using ESTLogViewer_V2.Formulare;
using Parent;
namespace ESTLogViewer_V2
{
    static class Program
    {
        //<summary>
        //Der Haupteinstiegspunkt für die Anwendung.
        //</summary>
        [STAThread]
        static void Main()
        {
            LoadTest.Haupt(null);
        }
    }
}
namespace Parent
{
    public class Constants
    {
        // adjust
        public const string LIB_PATH = @"e:\PRJDOTNET4\ESTLogViewer V2\Plugins\LogFiles_Plugin.dll";
    }

    public interface ILoader
    {
        string Execute();
    }

    public class Loader : MarshalByRefObject, ILoader
    {
        public …
Run Code Online (Sandbox Code Playgroud)

.net c# .net-assembly

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

使用 WinSCP .NET 程序集时 ...\WinSCP.exe 的版本与此程序集的版本不匹配

我正在使用一个名为WinSCPnet.dll. 该代码仅在我将其设置AssemblyFileVersion为与WinSCP.exe安装位置相同的版本时才有效。

我得到了这个例外:

C:\Program Files (x86l\WinSCP\WinSCP.exe (5.15.1.0) 的版本与此程序集的版本不匹配 C:\Users\burkarty\source\repos\UAReport3\UAReport3\bin\Debug\UAReport3.exe (0.0.0.0)。

如何独立于 WinSCP 版本运行我的代码?

我搜索了一个类似的问题,但没有对我有用。

.net c# winscp .net-assembly winscp-net

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

GetEntryAssembly 和 GetExecutingAssembly 的区别

我已经阅读了GetEntryAssemblyGetExecutingAssembly 的文档,试图弄清它们之间的区别。我只是不明白这些定义是如何相互关联的。尽管我看到了两种不同的表述,但我无法理解所暗示的区别。在我的脑海中,这是一种potayto-potahto情况,当我尝试显示每个返回的Assemby对象的值时,屏幕上的相同内容会加强这种情况。

自然地,肯定存在一些差异,这只是我的愚蠢让我无法意识到它是什么。所以我做了一些研究,才发现大部分智慧都是关于获得道路的。明确针对他们之间比较的孤独资源是一个死链

我可以问一个具体的例子,这两个方法返回的对象的内容不同吗?最好简要说明原因。

.net c# reflection .net-assembly .net-core

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

尝试从 .net core dll 创建程序集时出现 SQL Server 错误

我正在尝试从 SQL Server 2017 中的 .NET Core dll 创建程序集:

CREATE ASSEMBLY my_assembly 
FROM 'C:\Temp\MyDll.dll' WITH PERMISSION_SET = SAFE;
Run Code Online (Sandbox Code Playgroud)

这是 dll csproj :

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.1</TargetFramework>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|AnyCPU'">
    <PlatformTarget>x64</PlatformTarget>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.SqlServer.SqlManagementObjects" Version="161.46041.41" />
  </ItemGroup>   
  
</Project>
Run Code Online (Sandbox Code Playgroud)

当我运行查询时,出现以下错误:

程序集“MyAssembly”引用程序集“system.runtime, version=4.2.2.0,culture=neutral, publickeytoken=b03f5f7f11d50a3a.”,当前数据库中不存在该程序集。SQL Server 尝试从引用程序集来自的同一位置定位并自动加载引用程序集,但该操作失败(原因:2(系统找不到指定的文件。))。请将引用的程序集加载到当前数据库中,然后重试您的请求。

我该如何解决?

c# .net-assembly sql-server-2017 .net-core-3.1

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