VS 2015 DEBUG模式启动修改EXE文件内容

最近看了一下.NET程序集重定向方面的资料,并写了一个小程序测试了一下。
发现了两个问题:

1,在Visual Studio 2015 DEBUG模式下启动程序之后,生成的exe文件被修改了。
这种情况只有在生成解决方案之后第一次从VS启动程序时才会发生。
图片说明

2,把程序集所在的文件用另外一个所包含的程序集版本不同的文件替换之后,再从DEBUG模式下启动,exe中的manifest清单中竟然记录得是最后最后那个程序集的版本号。
也就是说,exe引用的是最后一次替换的那个程序集的版本号,而不是最初的那个文件中所包含的程序集版本号。
图片说明

补充:
1,实现的语言是C#。
2,三个程序集都是强命名的。
3,.NET 版本是4.6
4,应用程序配置文件内容如下:

 <?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup>
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6" />
  </startup>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Toolkit" publicKeyToken="ba4d601feaaddbdb" culture="neutral"/>
        <bindingRedirect  oldVersion="1.0.0.0" newVersion="2.1.0.0"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

请问是什么原因造成这两个问题的?

2个回答

签名一个exe必然需要把签名信息写进去,当然要修改。签名是编译后的操作,而不是编译的一部分。

hongshaohu01
洪少鹄 关键问题在于,AssemblyRedirection.exe这个程序集的依赖性被修改了。原来以来的是Toolkit.dll 1.0.0.0这个版本,在VS 2015里面DEBUG 启动之后,AssemblyRedirection.exe却引用的是Toolkit.dll 2.0.0.0这个版本。
3 年多之前 回复

关键问题在于,AssemblyRedirection.exe这个程序集的依赖性被修改了。原来以来的是Toolkit.dll 1.0.0.0这个版本,在VS 2015里面DEBUG 启动之后,AssemblyRedirection.exe却引用的是Toolkit.dll 2.0.0.0这个版本。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问