预构建MSBuild任务以更新AssemblyInfo与内置exe不同步
我在Visual Studio 2008中使用调用msbuild的预构建任务:
C:WINDOWSMicrosoft.NETFrameworkv3.5MSBuild.exe $(MSBuildProjectDirectory)version.targets /p:Configuration=$(ConfigurationName)
在version.targets中,我正在更新AssemblyInfo.cs文件以替换版本信息:
当我通过Visual Studio 2008构建项目时,它构建没有任何问题。
但是,当我查看生成的exe的版本信息时,它包含上一个时间戳,即使AssemblyInfo.cs已使用“正确”更改。
似乎主编译任务没有看到预编译的变化,它总是落后。
我做错了什么想法?
我不认为你做错了什么 – 这是一个错误。
我在这里报告了 – 检查你是否可以重现它并添加validation,也许我们可以通过MS修复它。
编辑:我尝试了“Si”的建议更新“BeforeBuild”事件中的文件 – 但是我仍然得到与Visual Studio 2008 / SP1相同的错误结果。
更新/解决方法 :MS已回复错误报告。 作为一种解决方法,您可以添加
FALSE
到您的csproj文件。
虽然接受的解决方案和链接文章都没有指定该行应该添加到.csproj
文件中的第一个
元素 ,但
技巧的+1。
这也是Visual Studio的一个问题,因为在同一个.csproj
文件中从命令行调用msbuild (没有技巧)会立即看到生成的代码文件(而不是以前的版本)。
此外,我想建议将此主题标记为以下内容,因为我必须挖掘很多才能找到它:
- 视觉工作室
- 编译器
- BeforeBuild
- 产生
- 。净
- C#
有意思的是,我编写了自己的自定义任务,它被挂在了BeforeBuild中,这很好用。 从未通过命令行从VS或MSBuild出现问题。 所以我想先探讨一下BeforeBuild ……
我知道因为我们使用构建服务器(CruiseControl.NET)构建号作为版本的“构建”部分,它构建在所有程序集中(我们在解决方案中的程序集中为AssemblyVersion和AssemblyFileVersion共享相同的AssemblyInfo.cs)和然后将其(通过FileUpdate任务)推送到我们的WiX项目中的变量,并用于标记MSI文件名。
如果你做一些谷歌搜索你应该找到其他的例子…抱歉我不能给你UpdateVersion代码,我需要我的工作许可,但如果你在网上找不到合适的东西,自定义任务很容易写,以上应该有所帮助。
使用下面的内容更改任何文件的任何内容。 每次我创建一个构建时,我在hallo.aspx中更改构建日期值。
例如Hallo.aspx的内容
上述就是C#学习教程:预构建MSBuild任务以更新AssemblyInfo与内置exe不同步分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/958719.html