C# 修改程序集版本和引用(.NET)

C# 修改程序集版本和引用(.NET),c#,.net,assemblies,version,C#,.net,Assemblies,Version,我在一个文件夹中有一个应用程序exe和3个引用的程序集。在VS2010、CLR 4.0中编译 我想修改所有4个程序集的版本以匹配(1.0.0.0),并修改每个程序集中的引用部分以匹配新的版本号 在应用程序已经在IDE外部构建之后,这是否可能 编辑: 下面是一个场景:我们的DLL通常以特定版本安装在GAC中。只有在发布商业产品时,版本才会增加。我们有许多自行编写的开发工具,它们使用GAC中安装的一些DLL。这些工具是在某一点上构建的,而不是在代码更改时重新构建。CLR更喜欢从GAC加载程序集,而不

我在一个文件夹中有一个应用程序exe和3个引用的程序集。在VS2010、CLR 4.0中编译

我想修改所有4个程序集的版本以匹配(1.0.0.0),并修改每个程序集中的引用部分以匹配新的版本号

在应用程序已经在IDE外部构建之后,这是否可能

编辑:

下面是一个场景:我们的DLL通常以特定版本安装在GAC中。只有在发布商业产品时,版本才会增加。我们有许多自行编写的开发工具,它们使用GAC中安装的一些DLL。这些工具是在某一点上构建的,而不是在代码更改时重新构建。CLR更喜欢从GAC加载程序集,而不是本地程序集,因此很多时候我们的工具都不使用它们生成时使用的程序集。这是一个巨大的问题,我不知道如何解决它,否则;当然,如果程序集被签署,它们将不再一起工作(实际上我认为它们根本不会工作?)。否则你甚至不需要修改参考资料


编辑:而且,马克是绝对正确的;无法想象什么样的场景会绝对要求您这样做,这是非常粗糙的。

最简单的选择是简单地重建和重新部署。您可以在config()中执行一些操作,但这似乎有些过分,因为我不确定如何在不重新生成程序集的情况下更改程序集的版本号,特别是如果这些程序集具有签名/strong名称(运行时将检测到作恶者)

对我来说这听起来像是在工作


如果DLL是您的,只需使用正确的版本重建它们。如果它们不是你的,也许不要戏弄它们。

听起来你需要一个或一个。这将使您的程序集始终使用最新版本,或使用引用的程序集的特定版本。

引用的程序集是来自您还是来自第三方?好的,我已经准备好了,但修改所有程序集需要很长时间。我现在正在寻找一种不同的方法。谢谢你的帮助!Reflexil似乎通常很有用。不知道这是否是您当前正在做的事情,但是如果引用是用“特定版本”指定的,则分别修改程序集文件版本(在构建时)和程序集版本(在发布时),通常应该具有所需的效果。虽然我不确定,但我知道我以前被GAC咬过很多次。而且,我真的不想让人觉得我是居高临下,但给出你的具体要求,不仅是你在具体解决方案中遇到的问题,往往可以发现与你想象的非常不同的解决方案,所以这通常是个好主意。正如我所说,“最新”和当前程序集的版本与仅在发布商业产品时增加的版本相同。这是不是一个好主意完全是另一回事。