在一个C#解决方案中,我有几个共享CommonAssemblyInfo.cs文件的项目,因此某些程序集属性在所有项目中共享。只要我只有一个CommonAssemblyInfo.cs文件,这样就可以正常工作。但是我有几个使用这些项目的解决方案(应用程序),每个解决方案都有自己的CommonAssemblyInfo.cs版本。
如何让项目使用不同的CommonAssemblyInfo.cs文件,具体取决于它们所处的解决方案?
最后,我希望我的程序集具有特定于它们编译的解决方案的属性。
我不认为我可以将它们作为文件解决方案文件,因为它们不能都在同一个目录中具有相同的文件名。我不能使用预构建事件,因为我没有一个始终首先构建的特定项目。我不想使用构建脚本,因为我希望能够通过Visual Studio环境构建和运行解决方案。
答案 0 :(得分:2)
不,我不相信你不能这样做 - 而对我来说,这听起来是一个非常糟糕的主意。如果两个二进制文件是从完全相同的源构建的,具有完全相同的配置,为什么它们有不同的属性才有意义呢?
你想用这个来实现什么? IMO你应该有一个非常的理由,然后再使构建变得更加复杂并违背正常的做事方式。
我还建议你只在CommonAssemblyInfo.cs
文件中指定真正常见的东西 - 比如公司名称。然后,正常情况下,每个项目都可以拥有自己的AssemblyInfo.cs
项目特定设置。我个人并不是在项目之间共享任何源文件的忠实粉丝,但在这种情况下,我可以看到它是如何产生一定意义的。
答案 1 :(得分:0)
如果你在这里构建一个所有其他程序集都要引用的简单库,那么我会说在你的解决方案中添加一个类库项目,其中包含CommonAssemblyInfo.cs文件,并添加来自其他项目的引用
由于您需要每个项目都有一个不同的版本,因此您可以选择两个选项:
在不了解您的解决方案空间的情况下,这些将是我的建议。
答案 2 :(得分:0)
您可以使用条件编译(#if)来破解它。 我在紧急工作中做到了这一点,但这很糟糕。 正如Jon Skeet解释的那样,只需更好地重构您的项目。