gpt4 book ai didi

asp.net - 使用网站项目中的发布配置文件 (.pubxml) 时如何设置 AssemblyVersion?

转载 作者:行者123 更新时间:2023-12-03 21:58:53 24 4
gpt4 key购买 nike

我正在使用新的 ASP.Net 和 Web 工具 2012.2 发布个人资料 用于网站(不是 Web 应用程序)。

我创建了一个 发布简介 使用创建文件 website.publishproj 的工具在网站的根目录中。
website.publishproj文件包含以下内容:

<AssemblyAttributes Include="AssemblyFileVersion">
<Value>$(AssemblyFileVersion)</Value>
</AssemblyAttributes>
<AssemblyAttributes Include="AssemblyVersion">
<Value>$(AssemblyVersion)</Value>
</AssemblyAttributes>

这表明您可以将属性传递给 MSBuild 以设置输出 dll 的版本。

但是,网站的单个输出程序集(编译然后合并为单个程序集)始终具有版本号 1.0.0.0 .

我试过传入 /p:AssemblyFileVersion=2.1.0.0;AssemblyVersion=2.1.0.0但这没有效果。

我什至尝试过直接编辑 website.publishproj 文件,但这也没有效果。

有谁知道如何在 Web 上设置输出程序集的版本号 网站当您希望将其合并为单个程序集时进行项目?

最佳答案

我已经设法解决了这个问题。我认为这是工具的错误。

如果您设置了 OutputPath属性到 website.publishproj 中的相对路径文件,然后是 AssemblyVersionAssemblyFileVersion属性不受尊重。

这是由于在将网站程序集合并为一个程序集时此版本控制的工作方式。

发生的事情是一个 AssemblyInfo.cs文件在部署期间生成并输入提供的版本号。此 AssemblyInfo.cs然后文件被编译成 AssemblyInfo.dll包含您传入的版本号。

然后aspnet_merge.execopyattrs 调用指向 AssemblyInfo.dll 的参数它之前生成的。

如果您设置 OutputPath到一个相对路径然后这个 copyattrs参数指向不存在的 dll。这是因为它是从 aspnet_merge.exe 工具所在的路径运行的。因此返回到 AssemblyInfo.dll 的相对路径大会没有找到它的真实位置。
OutputPath不能是相对的。

为了解决这个问题,我将我的设置为:

<PropertyGroup>
<OutputPath>$(MSBuildProjectDirectory)\..\..\TempPackageBuildDir\</OutputPath>
</PropertyGroup>

为什么要设置OutputPath根本?

当你不设置 OutputPath它使用环境变量中的临时目录。就我而言,这会导致构建失败,因为某些文件的文件长度超过了 260 个字符的窗口限制(我有一个非常大的网站)。我完全可以让它构建的唯一方法是设置 OutputPath到更浅的路径。

关于asp.net - 使用网站项目中的发布配置文件 (.pubxml) 时如何设置 AssemblyVersion?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15147036/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com