标签: assemblies

如何使用Sandbox在.NET中创建插件模型?

有没有办法将.NET程序集加载到也以自定义方式限制的Sandbox环境中?我知道你可以在不同的AppDomain中运行程序集,但是你可以限制它能够做你想要限制的某些事情吗?

例如:我希望能够在ASP.NET应用程序内的单独程序集中加载插件(简单,仅通过特定接口定义),但我只希望插件能够访问某些数据访问层组件并且无法直接连接到任何数据库.我正在考虑让一个应用程序实例托管多个客户端数据的情况,我只希望该插件能够访问当前登录的特定客户端/用户的数据.

任何人对如何做到这一点都有任何想法?

我在这里找到了关于如何在Sandbox中加载程序集的以下问题,但它没有讨论添加Sandbox的任何自定义限制:

在"沙箱环境"中从.Net应用程序加载程序集

更新:看起来你可以在调用" AppDomain.CreateDomain "时设置一个非常具体的" PermissionSet " ,但我不确定我需要设置哪些权限来允许/禁止上面的指定权限.MSDN上也有这篇文章:http://msdn.microsoft.com/en-us/library/bb763046.aspx

此外,我希望在.NET 2.0/3.5中执行此操作

除了使用System.AddIn之外的任何其他想法?

.net plugins assemblies sandbox

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

为什么某些 .Net 程序集无法通过 AppDomain 的 GetAssemblies() 方法获得?

我有一些代码循环遍历当前加载到在 ASP.NET 应用程序中运行的 AppDomain 中的类型。以下是我获取程序集的方法:

var assemblies = AppDomain.CurrentDomain.GetAssemblies();
Run Code Online (Sandbox Code Playgroud)

当应用程序第一次启动时没有问题,并且我期望的所有类型都存在。但是,当我更新 Web.config 或终止 w3p.exe 进程(或该进程因任何原因被回收)时,只有一些我期望的类型可用。当我使用调试器单步执行时,我注意到私有搜索路径(我的应用程序的 bin 目录)中的某些程序集尚未加载。我假设所有程序集都在应用程序启动和重新启动时加载,无论是否立即需要它们。但在重新启动的情况下,除非这些程序集文件已更新,否则似乎不会发生这种情况。

我需要的是在启动时收集类型信息以供以后使用。但由于在重新启动期间类型不可用,因此当需要使用类型信息时会造成严重破坏。那么考虑到这一点,我该如何解决或解决这个缺陷呢?

.net c# reflection assemblies appdomain

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

Mono - 无法加载文件或程序集

我刚刚将我的项目导出到我的新 imac,并将我的解决方案加载到 monodevelop。成功编译后,我启动了项目,但总是出现相同的错误。

** (/Library/Frameworks/Mono.framework/Versions/2.6.1/lib/mono/2.0/xsp2.exe:1576): 警告 **: 以下程序集引用自 /private/var/folders/9y/9ypfv24bEwieHw +Yy+PUsU+++TI/-Tmp-/nhu-temp-aspnet-0/ebc9e2c6/assembly/shadow/7f5f6265/859daf16_fac2cd73_00000001/Centrism.Administration.UI.dll 无法加载:程序集:Centrism_index.Core (assembly) =3) 版本:0.0.3688.40278 公钥:(无)在全局程序集缓存中找不到程序集,在 MONO_PATH 环境变量中列出的路径,或在执行程序集的位置 (/var/folders/9y/ 9ypfv24bEwieHw+Yy+PUsU+++TI/-Tmp-/nhu-temp-aspnet-0/ebc9e2c6/assembly/shadow/7f5f6265/859daf16_fac2cd73_00000001/)。

** (/Library/Frameworks/Mono.framework/Versions/2.6.1/lib/mono/2.0/xsp2.exe:1576):警告**:无法加载文件或程序集'Centrism.Core,版本=0.0。 3688.40278,Culture=neutral,PublicKeyToken=null' 或其依赖项之一。

在其他项目中,程序集工作正常并且可以加载。

mono assemblies gac xsp monodevelop

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

如果我向C#类添加一个公共方法,我是否需要使用该类型重新编译其他程序集?

标题中的问题.

我想避免重新编译,因为我正在修改的源代码是第三方,我想尽可能使用原始二进制文件,并只替换包含我修改过的类的程序集.但我不确定这是否安全.以C++为例,这绝对是一个坏主意.

.net c# assemblies interface public

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

如何禁止引用.NET DLL类库

我怎样才能禁止在其他解决方案中引用dll类库?

.net security assemblies reference

3
推荐指数
2
解决办法
808
查看次数

如何找到哪个.NET项目引用正在传递加载另一个程序集?

我有一个项目,我正在尝试部署到另一台PC,但安装失败,因为它需要在GAC中安装一个程序集.但是该程序集(System.ServiceModel.DomainServices.Hosting 4.0.0.0)与我的项目无关,所以我试图删除它和加载它的直接引用.

我的项目- 直接依赖于 - > 未知引用 - 间接依赖于 - > System.ServiceModel.DomainServices.Hosting 4.0.0.0

如何找出项目中哪些直接引用间接加载这个无用的DomainServices程序集?我看不出用反射做的方法......

(这是一个普遍的问题,但如果它有助于我在.NET 4.0,Visual Studio 2010和ClickOnce上使用C#来部署项目.)

.net c# assemblies

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

说,"程序集已成功添加到缓存中",但它不在缓存中

我得到的反馈:

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools>gacutil.
exe /i "C:\Users\wherever\ClassLibrary1.dll"
Microsoft (R) .NET Global Assembly Cache Utility.  Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.

Assembly successfully added to the cache

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\NETFX 4.0 Tools>
Run Code Online (Sandbox Code Playgroud)

但它不是在寻找内容

gacutil.exe /l | clip
Run Code Online (Sandbox Code Playgroud)

它不在/ Windows /程序集中

我正在使用.net 4.

.net com assemblies gac .net-assembly

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

文件“详细信息”选项卡中的“语言中性”属性

如何更改用 C# 编写的 DLL 的语言属性?

我尝试进入Project Properties -> Assembly Information -> Neutral Language组合框并将其设置为English (United States).

生成/重建项目/解决方案后,当我右键单击 DLL 并转到“详细信息”选项卡时,“语言”属性始终显示Language Neutral.

编辑: 我找到的解决方案是使用外部 *.res 文件(由 Visual Studio 简单生成),然后在对话框中选择它Project Propertie->Application Tab-> Resource File

c# dll assemblies localization

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

如何在不包含引用的解决方案中获取每个项目的程序集?

很抱歉,如果这是重新发布/重复,但我找不到任何相关的内容.

这是我尝试过的:

var assembly = Assembly.GetExecutingAssembly();
Run Code Online (Sandbox Code Playgroud)

它可以让你获得正在执行的程序集

var assemblies = AppDomain.CurrentDomain.GetAssemblies();
Run Code Online (Sandbox Code Playgroud)

它可以让每一个组件,包括您的参考.

但是,我想要解决方案项目的所有程序集(而不是包/引用).

c# assemblies

3
推荐指数
2
解决办法
5981
查看次数

IsAssembly / IsFamily 和 IsFamilyOrAssembly 之间的关系

IsAssembly, IsPublic, IsFamily, IsFamilyOrAssembly, IsFamilyAndAssembly我已经阅读过相关内容,但我无法理解每个人的作用。这里奇怪的是IsFamily,在代码中返回并IsAssembly返回False,但IsFamilyOrAssembly返回True.

有人可以解释每个属性,因为我发现从文档中很难理解。当我开始阅读 c# 中的反射时,我遇到了所有这些。

public class Example
{
    public void m_public() {}
    internal void m_internal() {}
    protected void m_protected() {}
    protected internal void m_protected_public() {}

    public static void Main()
    {
        Console.WriteLine("\n{0,-30}{1,-18}{2}", "", "IsAssembly", "IsFamilyOrAssembly"); 
        Console.WriteLine("{0,-21}{1,-18}{2,-18}{3}\n", 
            "", "IsPublic", "IsFamily", "IsFamilyAndAssembly");

        foreach (MethodBase m in typeof(Example).GetMethods(
            BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public))
        {
            if (m.Name.Substring(0, 1) == "m")
            {
                Console.WriteLine("{0,-21}{1,-9}{2,-9}{3,-9}{4,-9}{5,-9}", 
                    m.Name,
                    m.IsPublic,
                    m.IsAssembly,
                    m.IsFamily,
                    m.IsFamilyOrAssembly,
                    m.IsFamilyAndAssembly
                );
            } …
Run Code Online (Sandbox Code Playgroud)

.net c# assemblies system.reflection .net-assembly

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