是否有必要保护专用.Net程序集?

是否有必要保护专用.Net程序集?,.net,security,assemblies,.net,Security,Assemblies,我目前正在从事一个.net项目,我正在将其划分为不同的程序集 一个程序集(dll)将包含大部分域逻辑,而其他程序集(.exe)将包含大部分表示和控制逻辑 我的问题是,如果我想阻止某人获取我的DLL,并在未经我许可的情况下将其添加为Visual Studio上的引用,并为模型开发一个新接口,那么我是否可以仅将程序集构建为私有的?将程序集构建为私有是否意味着只有构建在一起的程序集才能相互引用 构建应用程序并使其DLL和EXE作为单个逻辑单元运行的最简单方法是什么?在构建项目时,DLL程序集只能在该逻

我目前正在从事一个.net项目,我正在将其划分为不同的程序集

一个程序集(dll)将包含大部分域逻辑,而其他程序集(.exe)将包含大部分表示和控制逻辑

我的问题是,如果我想阻止某人获取我的DLL,并在未经我许可的情况下将其添加为Visual Studio上的引用,并为模型开发一个新接口,那么我是否可以仅将程序集构建为私有的?将程序集构建为私有是否意味着只有构建在一起的程序集才能相互引用

构建应用程序并使其DLL和EXE作为单个逻辑单元运行的最简单方法是什么?在构建项目时,DLL程序集只能在该逻辑单元上被引用程序集引用

您好,

您可以帮忙。只需使用.exe程序集全名将其加载到.dll上,并将.dll中的所有内容都设置为内部的:

[assembly:InternalsVisibleTo("full name of the .exe")]

internal class Whatever { }
internal interface IWhatever { }
如果你使用它会更安全,因为否则我可以创建一个与你相同文件名的.exe


还有一个MSDN页面,关于。

您是否试图防止随意或故意滥用您的组件?对于偶然的误用,通过friend assembly use声明一个半公共API是可行的。但是,任何完全受信任的代码都能够通过反射调用程序集中的低可见性成员,因此限制可见性无法防止故意滥用。对于这种情况,有时有必要混淆您的半公共API,以便让无意的调用方更难使用它