【问题标题】:AssemblyFileVersion causing build to failAssemblyFileVersion 导致构建失败
【发布时间】:2011-03-17 15:26:38
【问题描述】:

当我尝试构建我的项目时,我收到以下错误:

error : Unable to update the AssemblyFileVersion for c:\builddir\MyProject\AssemblyInfo.cs: No stub entry for AssemblyFileVersion was found in the AssemblyInfo file.

我找到了this 文章,这意味着需要一个“存根”属性。因此,在我的 AssemblyInfo.cs 中,我尝试指定一个:

[assembly: AssemblyFileVersion("1.0.0")]

但是,它不被识别。我终于看到了this 文章,它说您不能将 AssemblyFileVersion 属性与 CF 一起使用。构建脚本使用的目标文件也用于构建其他非 CF 项目,需要为它们更新 FileVersion。

是否可以在 AssemblyInfo.cs 文件、目标文件或构建脚本中添加一些内容以阻止此问题成为问题?

【问题讨论】:

    标签: tfs msbuild compact-framework


    【解决方案1】:

    是的,是这样的:

    #if !(WindowsCE || PocketPC)
    [assembly: AssemblyFileVersion("1.0.0")] 
    #endif
    

    【讨论】:

    • 这似乎不起作用,因为 CF 无法识别 AssemblyFileVersion
    • 这就是#if 存在的原因。如果是 CF 应用程序,将定义 WindowsCE 或 PocketPC,并且不会编译该行。
    • 你真的可以把它放在任何地方。我通常将它放在 Studio 放置原始文件的 AssemblyInfo.cs 文件中,或者如果我在多个二进制文件之间共享版本信息,那么我将它放在一个通用的共享文件中。
    • 但这并不能解决问题 - CF 项目仍然没有那个存根?
    • 我不明白这个问题。执行上述操作可消除您看到的错误并允许您的代码编译。我一直都这样做。如果您还有其他问题,则需要进一步解释。例如,如果你想支持该属性并让它做一些事情(比如你需要你的程序集和文件版本不同),那么你可以使用这样的东西:blog.opennetcf.com/ncowburn/…
    【解决方案2】:

    如果以其他答案中描述的方式使用预处理器对您不起作用,请考虑将 AssemblyFileVersion 属性放入单独的源文件中,并有条件地将该源文件包含在项目中:

    <Compile Include="AssemblyInfo.cs" />
    <Compile Include="AssemblyInfo.AssemblyVersion.cs"
      Condition="
        '$(TargetPlatform)' == 'WindowsCE' OR
        '$(TargetPlatform)' == 'PocketPC'"
      />
    

    我不确定项目文件中是否已经有可以使用的属性,或者是否需要声明自己的属性(也许 $(Platform) 用于此?)

    【讨论】:

      猜你喜欢
      • 2019-09-21
      • 1970-01-01
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 2021-11-30
      • 2015-02-07
      • 2017-03-23
      • 2018-09-18
      相关资源
      最近更新 更多