相关疑难解决方法(0)

AssemblyInfo版本信息星号

它在AssemblyInfo.cs中为C#项目说明可以用它指定版本信息 *

// Version information for an assembly consists of the following four values:
//
//      Major Version
//      Minor Version 
//      Build Number
//      Revision
//
// You can specify all the values or you can default the Revision and Build Numbers 
// by using the '*' as shown below:
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
Run Code Online (Sandbox Code Playgroud)

我改成了这个:

[assembly: AssemblyVersion("1.0.*.*")]
[assembly: AssemblyFileVersion("1.0.*.*")]
Run Code Online (Sandbox Code Playgroud)

这是我从编译器得到的错误:

error CS0647: Error emitting 'System.Reflection.AssemblyVersionAttribute' attribute -- 'The version specified '1.0.*.*' is invalid'
warning CS1607: Assembly generation -- The …
Run Code Online (Sandbox Code Playgroud)

.net c#

49
推荐指数
4
解决办法
3万
查看次数

如何使用SQL Server比较软件版本?

当尝试比较软件版本5.12到5.8时,版本5.12更新,但数学上5.12小于5.8.我如何比较两个版本,以便更新的版本返回'Y'?

SELECT CASE WHEN 5.12 > 5.8 THEN 'Y' ELSE 'N' END
Run Code Online (Sandbox Code Playgroud)

可能的解决方案

  1. 在5.8中的小数后添加一个0,以便它比较5.08到5.12,但似乎这需要一些代码.
  2. 只需比较小数点后的值(即12> 8),但是当版本滚动到6.0时,这会失败.
  3. 使用反向逻辑并假设如果5.12小于5.8则返回'Y'.我相信当版本滚动到6.0时这会失败.

sql t-sql sql-server

15
推荐指数
5
解决办法
1万
查看次数

为什么警告CS1607"为'产品版本'指定的版本不是正常的'major.minor.build.revision'格式"生成的?

今天我得到了一个为'产品版本'指定的版本不符合正常的'major.minor.build.revision'格式警告.

这与使用有关AssemblyInformationalVersionAttribute.

我的程序集属性是:

[assembly: AssemblyInformationalVersion("XXX 1.1.0")]
[assembly: System.Runtime.InteropServices.ComVisible(false)]
Run Code Online (Sandbox Code Playgroud)

基本上编译器抱怨XXX 1.1.0这看起来不像x.y.z.r.来自MSDN:

信息版本以字符串格式提供程序集的附加版本信息.它仅供参考,不在运行时使用.虽然您可以指定任何文本,但如果字符串不是程序集版本号使用的格式,或者如果它采用该格式但包含通配符,则会在编译时显示警告消息.这个警告是无害的.

所以他们说可能会发生无害的警告.问题是,它破坏了我的构建.我甚至无法抑制CS1607警告(我在项目级别尝试过,没有效果),如以下错误所示http://connect.microsoft.com/VisualStudio/feedback/details/275197/assemblyinformationalversion-should-not -generate-cs1607

实际上,在我将本地化资源添加到项目之前,一切都很好(没有警告).我以前MyResources.resx在项目中有一个文件.我添加了一个本地化MyResources.fr.resx文件,这个资源是警告的来源(或者至少:如果我从项目中删除此文件,它会在没有警告的情况下编译).

我没有看到CS1607(与x64与x86相关)AssemblyInformationalVersionAttribute和本地化资源文件之间的任何链接......

我怎么能解决我的项目,所以我可以使用XXX 1.1.0AssemblyInformationalVersionAttribute,没有任何(即使是无害的)警告?

压制CS1607警告我不是那么好(在错误引用时可能有用),但我甚至没有设法压制它.

请注意我通过谷歌搜索发现它是CS1607,编译器从未返回实际的警告代码.

还要注意我的项目目标.Net 2.0,并转移到.Net 4.0修复了这个问题(当然我不能这样做).

欢迎任何解释.

PS: CS1607:为'文件版本'指定的版本不是正常的'major.minor.build.revision'格式在.NET中问题是不相关的(不是关于AssemblyInformationalVersion)


编辑:谢谢Hans Passant.从您的回答中,我了解到AssemblyInformationalVersion用于生成ProductVersionWin32 VersionInfo结构中可用的两个值.

  • 如果AssemblyInformationalVersion属性为空,则AssemblyVersion使用该属性.
  • 如果AssemblyInformationalVersionx.y.z,则两个ProductVersion值均为x.y.z.
  • 如果AssemblyInformationalVersion是另一个字符串,则数值值ProductVersion不设置(0.0.0),并且仅设置文本ProductVersion值. …

.net c# warnings visual-studio-2010 .net-assembly

7
推荐指数
1
解决办法
2420
查看次数