重命名.NET 2.0可执行文件

问题描述:

有没有人知道更改后生成事件的C#.NET 2.0可执行文件名时的任何问题,因为可执行文件是强命名的并且具有嵌入式清单?另外,可执行文件在被打包到安装程序之前将由第三方签名。重命名.NET 2.0可执行文件

我知道任何关联的.config文件也需要重命名以反映新的可执行文件名称。

我还猜测最好的解决方案是更改项目属性中的程序集名称,而不是重命名可执行文件名?问题是Visual Studio不能很好地处理条件汇编名称。 (即将条件属性添加到.csproj中的标签)

+0

你好像提了两个问题,但没有说明。不,重命名文件永远不是真正的问题。 – 2011-03-04 14:04:33

+4

强大的命名exe并没有真正的好处。强大的命名dll的好处是,有人不能用自己版本的恶意代码替换它(并且可以将其放入GAC中)。除非你在另一个项目中引用你的exe,就好像它是一个dll(这很奇怪),你不需要强调它的名字。 – jonathanpeppers 2011-03-04 14:50:00

+0

@ Jonathan.Peppers - 听起来更像是一个答案,而不是评论。如果你把它作为答案,我们可以投票! – RQDQ 2011-03-04 20:20:05

VS加载项目一次,然后将其存储在内存中。如果你想建立从VS两个组件可以添加AfterBuild目标,并呼吁MSBuild的再次但是使用不同的参数生成程序集:

<ProperttyGroup Condition="'$(BuildAgain)'==''"> 
    <!-- Default parameters to VS --> 
    <AssemblyName>Name1,Default</AssemblyName> 
<ProperttyGroup> 

<ProperttyGroup Condition="'$(BuildAgain)'=='true'"> 
    <!-- Overrided parameters --> 
    <AssemblyName>Name2.Custom</AssemblyName> 
<ProperttyGroup> 

<Target Name="AfterBuild" 
     Condition="'$(BuildAgain)'==''"> 
    <MSBuild Projects="$(MSBuildProjectFullPath)" 
       Properties="BuildAgain=true;Configuration=$(Configuration);Platform=$(Platform)" 
       Targets="Rebuild" 
</Target> 
+0

作品一种享受!唯一需要注意的是AfterBuild目标应该有'Condition ='$(BuildAgain)=='''来停止错误'目标依赖关系图中存在循环依赖关系,涉及目标“Build”' – 2011-03-08 10:41:31

+0

同意。我已经纠正了答案。 – 2011-03-08 17:57:40

强命名exe文件没有真正的好处。强大的命名dll的好处是,有人不能用自己版本的恶意代码替换它(并且可以将其放入GAC中)。除非你在另一个项目中引用你的exe,就好像它是一个dll(这很奇怪),你不需要强调它的名字。

+1

这只是我们一直以来做的事情。感谢您提供的信息,我总是欣赏其他知识,但也许这会更好,而不是回答?它只会降低某人尝试从列表中回答问题的可能性。再一次,它是值得赞赏的。 – 2011-03-05 10:25:24