6

所以我有一个没有 AssemblyInfo.cs 文件或 Bin 文件夹或类似的东西的 ASP.NET“网站”(而不是 Web 应用程序)。

我想有一种方法来指定程序集版本号(例如 7.0.2.0)。在 Web 应用程序中,您可以在 AssemblyInfo.cs 文件中执行此操作。

我尝试添加带有 AssemblyInfo.cs 文件的 Properties 文件夹,但我认为它没有被拾取 - 因为当我调用 Assembly.GetExecutingAssembly().GetName().Version.ToString() 时,我得到 0.0.0.0

那么:我必须做什么才能让 AssemblyInfo.cs 正常工作,或者如何指定版本号?

4

5 回答 5

7

K Scott Allen在这里有一篇文章,但我个人建议您转到 Web 应用程序项目。

于 2009-10-05T16:47:15.560 回答
1

版本号设置 dll 的版本。由于您不预编译网站项目,我不确定您是否可以设置这样的版本号。您可能只需要在源代码控制系统中使用标签或其他东西进行版本控制,然后自己进行管理。

于 2009-10-05T16:43:42.883 回答
1

尝试将 AssemblyInfo 类放入 App_Code 文件夹。

于 2009-10-05T16:45:15.780 回答
1

没有单个程序集供您设置版本号。您需要重新考虑您要完成的工作。

于 2009-10-05T16:47:29.147 回答
1

也许我来晚了一点,但我遇到了问题,我所做的只是创建和组装只包含一个带有我想要的属性的 AssemblyInfo.cs 源文件。

然后我将项目 AssemblyInfo 添加到我的解决方案中。

然后我实现了一个要在部署时运行的脚本,如下所示:

:: Just prepare and clean before starting
SET DOTNETINSTALLDIR=%FRAMEWORKDIR%\v4.0.30319
rmdir /S /Q "%Depot%\AssetExplorer.Web"
mkdir "%Depot%\AssetExplorer.Web"

:: Compiles the web site
call "%DOTNETINSTALLDIR%\aspnet_compiler" -f -c -u -p "%~1..\Discovery.Web" -v "/AssetExplorer" "%Depot%\AssetExplorer.Web"

:: Time to merge the contents into the assembly
call "%WindowsSDK_ExecutablePath_x86%\aspnet_merge" -o ICM.dll -a "%Depot%\AssetExplorer.Web" -copyattrs "%~1..\AssemblyInfo\obj\Release\AssemblyInfo.dll"

魔法就在

-copyattrs "%~1..\AssemblyInfo\obj\Release\AssemblyInfo.dll", 

它从 AssemblyInfo.dll 中获取属性并将它们复制到生成的程序集中。

希望能帮助到你 ;)

于 2018-12-14T13:18:35.513 回答