C# 重命名.NET 2.0可执行文件
在生成后事件中更改C#.NET 2.0可执行文件名时,如果该可执行文件具有强名称且具有嵌入清单,是否有人知道存在任何问题?此外,在打包到安装程序中之前,可执行文件将由第三方签名 我知道任何相关的.config文件也需要重命名以反映新的可执行文件名C# 重命名.NET 2.0可执行文件,c#,.net,visual-studio,.net-assembly,C#,.net,Visual Studio,.net Assembly,在生成后事件中更改C#.NET 2.0可执行文件名时,如果该可执行文件具有强名称且具有嵌入清单,是否有人知道存在任何问题?此外,在打包到安装程序中之前,可执行文件将由第三方签名 我知道任何相关的.config文件也需要重命名以反映新的可执行文件名 我猜最好的解决方案是更改项目属性中的程序集名称,而不是重命名可执行文件名,这对吗?问题是VisualStudio不能很好地处理条件程序集名称。(即,在.csproj中的标记中添加一个条件属性)强命名exe没有实际好处。对dll进行强命名的好处是,有人不
我猜最好的解决方案是更改项目属性中的程序集名称,而不是重命名可执行文件名,这对吗?问题是VisualStudio不能很好地处理条件程序集名称。(即,在.csproj中的标记中添加一个条件属性)强命名exe没有实际好处。对dll进行强命名的好处是,有人不能用自己的恶意版本替换它(您可以将其放入GAC)。除非您在另一个项目中像引用dll一样引用exe(这很奇怪),否则您不需要对其进行强名称。VS只加载一次项目,然后将其存储在内存中。如果要从VS生成两个程序集,可以添加AfterBuildtarget并调用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>
名称1,默认值
姓名2.习俗
你似乎提到了两个问题,但都没有描述。不,重命名文件从来不是一个真正的问题。强命名exe没有真正的好处。对dll进行强命名的好处是,有人不能用自己的恶意版本替换它(您可以将其放入GAC)。除非您在另一个项目中引用exe,就好像它是一个dll(这会很奇怪),否则您不需要将其命名为强名称。@Jonathan.Peppers-这听起来更像是一个答案,而不是一个注释。如果你把它作为答案,我们可以投票赞成!就这么做了。有时我觉得评论和回答之间有一个灰色地带,因为我不能100%确定删除强名称是否能解决他的问题,即使这很可能是不必要的。@RQDQ-乔诺坦没有回答我的问题,这就是为什么我说它应该是一个评论而不是一个答案。我从来没有问过强命名一个可执行文件是否是一个问题,我问过重命名一个托管可执行文件(恰好是强命名的,并且有一个嵌入的清单)是否是一个问题。这是有价值的信息,但并没有回答我的问题。这只是我们一直在做的事情。谢谢你提供的信息,我一直很感激你提供的任何其他知识,但也许这作为一个评论而不是一个答案会更好?这只会降低有人试图回答列表中问题的可能性。再次感谢你,这是一种享受!唯一需要注意的是,AfterBuild目标应该具有条件='$(BuildReach)='
以停止错误“在涉及目标“Build”的目标依赖关系图中存在循环依赖关系”