加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 如何在网站项目中使用发布配置文件(.pubxml)时设置As

发布时间:2020-12-16 06:23:22 所属栏目:asp.Net 来源:网络整理
导读:我正在使用新的ASP.Net和Web Tools 2012.2发布网站配置文件(而不是Web应用程序). 我使用工具创建了一个发布配置文件,该工具在网站的根目录中创建了文件website.publishproj. website.publishproj文件包含以下内容: AssemblyAttributes Include="AssemblyFil
我正在使用新的ASP.Net和Web Tools 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文件中的相对路径,则不会遵循AssemblyVersion和AssemblyFileVersion属性.

这是由于在将网站程序集合并到一个程序集中时此版本控制的工作原理.

会发生什么是在部署期间生成AssemblyInfo.cs文件并输入提供的版本号.然后将此AssemblyInfo.cs文件编译为AssemblyInfo.dll,其中包含您传入的版本号.

然后使用copyattrs参数调用aspnet_merge.exe,该参数指向它先前生成的AssemblyInfo.dll.

如果将OutputPath设置为相对路径,则此copyattrs参数指向不存在的dll.这是因为它是从aspnet_merge.exe工具所在的路径运行的.因此,返回AssemblyInfo.dll程序集的相对路径找不到它的真实位置.

OutputPath不能是相对的.

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

<PropertyGroup>
    <OutputPath>$(MSBuildProjectDirectory)....TempPackageBuildDir&;/OutputPath>
</PropertyGroup>

为什么还要设置OutputPath呢?

如果不设置OutputPath,它将使用环境变量中的临时目录.在我的情况下,这将导致构建失败,因为一些文件的文件长度超过了260个字符的窗口限制(我有一个非常大的网站).我完全可以构建它的唯一方法是将OutputPath设置为更浅的路径.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读