发布C#web项目

发布C#web项目,c#,asp.net,C#,Asp.net,我有一个用c#和.Net编写的web服务,我有以下问题: 当我选择发布项目时会发生什么 代码仍然可读吗 如果不是的话,扭转局面有多容易 当我选择发布项目时会发生什么情况? 它编译项目(到.dll文件)并将项目导出到文件夹 代码仍然可读吗? 是的,通过使用 如果没有,扭转它有多容易? 很容易。。只需安装反射器 当我选择发布项目时会发生什么情况? 它编译项目(到.dll文件)并将项目导出到文件夹 代码仍然可读吗? 是的,通过使用 如果没有,扭转它有多容易? 很容易。。只需安装反射器 在Visual

我有一个用c#和.Net编写的web服务,我有以下问题:

  • 当我选择发布项目时会发生什么
  • 代码仍然可读吗
  • 如果不是的话,扭转局面有多容易

当我选择发布项目时会发生什么情况?

它编译项目(到.dll文件)并将项目导出到文件夹

代码仍然可读吗?

是的,通过使用

如果没有,扭转它有多容易?

很容易。。只需安装反射器


当我选择发布项目时会发生什么情况?

它编译项目(到.dll文件)并将项目导出到文件夹

代码仍然可读吗?

是的,通过使用

如果没有,扭转它有多容易?

很容易。。只需安装反射器


在Visual studio或MSBuild中执行发布操作时,它只编译代码并将其复制到某个特定的目标位置

编译会将可读的源代码更改为更具机器可读性的形式。在C#和其他基于CLR的语言(即VB.NET)中,输出是中间语言(IL)。这种语言本身并不是人类可读的,但它可以通过许多不同的工具相对容易地反向工程回到C

当编译发生时,代码将更改以对代码执行一些优化,因此反向工程代码很可能与原始源代码不完全相同。注释和代码中不影响执行的其他部分将被删除


有一些工具可以在编译代码之前对代码进行模糊处理。例如,VisualStudio将附带dotfuscator。不幸的是,这些混淆很容易被那些对编译的C代码进行反向工程的工具所扭转。

当您在Visual studio或MSBuild中执行发布操作时,它只编译代码并将其复制到某个特定的目标位置

编译会将可读的源代码更改为更具机器可读性的形式。在C#和其他基于CLR的语言(即VB.NET)中,输出是中间语言(IL)。这种语言本身并不是人类可读的,但它可以通过许多不同的工具相对容易地反向工程回到C

当编译发生时,代码将更改以对代码执行一些优化,因此反向工程代码很可能与原始源代码不完全相同。注释和代码中不影响执行的其他部分将被删除

有一些工具可以在编译代码之前对代码进行模糊处理。例如,VisualStudio将附带dotfuscator。不幸的是,这些混淆可以很容易地被那些对编译的C#代码进行反向工程的工具所逆转

当我选择发布项目时会发生什么

您的C#代码被编译为托管DLL文件,该文件是图片中的红色框

只有C++可以编写非托管代码,这非常难反编译

代码仍然可读吗?如果不是的话,这有多容易 倒过来

是的,很容易。您可以使用以下工具来反编译源代码-

  • (免费)
  • (免费)
  • (商业)
不提供100%的代码保护。底线是如果您不信任托管服务,就不要托管您的web应用程序

信贷:图片来自丹尼尔·索利斯(Daniel Solis)的《插图C#2012》

当我选择发布项目时会发生什么

您的C#代码被编译为托管DLL文件,该文件是图片中的红色框

只有C++可以编写非托管代码,这非常难反编译

代码仍然可读吗?如果不是的话,这有多容易 倒过来

是的,很容易。您可以使用以下工具来反编译源代码-

  • (免费)
  • (免费)
  • (商业)
不提供100%的代码保护。底线是如果您不信任托管服务,就不要托管您的web应用程序


信用:图片是由C++ C++ 2012所示的Daniel Solis

第2和第3行:第2和3:有很多语言编译成本机代码,C++当然不是唯一的。我不会同意你的观点,但是OP在.NET中明确地声明.C.NET不是一个.NET语言。C++/CLI是,但它会编译为IL,并且可以相对轻松地反编译。您的注释会被转移。我从来没有说过C++不能编译成CIL。此外,即使微软简称C++/CLI为C++,我也说你只能选择一个:C++(C++ C++语言的形式)是.NET语言,并且可以很容易地反编译,在这种情况下,语句是错误的。或者C++不是.NET语言,但是它不是唯一的一个,而且这个声明也是错误的。你不能混合和匹配,比如说:“C++编译成非托管代码,它是这里唯一相关的语言,因为C++ + CLI是.NET语言。”有很多语言编译成本地代码,C++当然不是唯一的。我不会同意你的观点。但是OP在问题上明确地声明.NET,但是C++不是.NET语言。C++/CLI是,但它会编译为IL,并且可以相对轻松地反编译。您的注释会被转移。我从来没有说过C++不能编译成CIL。此外,即使微软简称C++/CLI为C++,我也说你只能选择一个:C++(C++ C++语言的形式)是.NET语言,并且可以很容易地反编译,在这种情况下,语句是错误的。或者C++不是.NET语言,但是它不是唯一的一个,而且这个声明也是错误的。你不能混搭说:“C++编译成非托管代码