在AssemblyInfo.cs中引用项目时,发布预编译的ASP.NET失败
当我们尝试在启用发布期间使用Precompile发布我们的ASP.NET应用程序时,它将失败,因为我们在AssemblyInfo.cs
文件中引用了一个项目。
这是我们的项目结构:
Project.WebUI (ASP.NET MVC App on .NET 4.6.2) Project.Resources (Class Library on .NET 4.6.2) Project.Domain (Class Library on .NET 4.6.2) Project.Services (Class Library on .NET 4.6.2)
在Project.WebUI的AssemblyInfo.cs
,我们引用了Project.Resources,如下所示:
using Project.Resources; .... [assembly: AssemblyVersion(VersionInformation.FileVersion)] [assembly: AssemblyFileVersion(VersionInformation.FileVersion)] [assembly: AssemblyInformationalVersion(VersionInformation.ProductVersion)]
类VersionInformation是Project.Resources中的静态类。
所有其他程序集也为其AssemblyVersion
提供了这些引用
当我们构建(调试或发布)时,它将通过而没有任何错误。 当我们发布Project.WebUI项目时,我们收到以下错误:
Severity Code Description Project File Line Suppression State Error The type or namespace name 'Project' could not be found (are you missing a using directive or an assembly reference?) Project.WebUI PropertiesAssemblyInfo.cs 3 Error The name 'VersionInformation' does not exist in the current context Project.WebUI PropertiesAssemblyInfo.cs 34 Error The name 'VersionInformation' does not exist in the current context Project.WebUI PropertiesAssemblyInfo.cs 35 Error The name 'VersionInformation' does not exist in the current context Project.WebUI PropertiesAssemblyInfo.cs 36
我们的发布配置文件如下所示:
[X] Delete all existing files prior to publish [X] Precompile during publishing Precompile Options [ ] Allow precompiled site to be updatable [ ] Emit debug information Merge Options [ ] Do not merge [ ] Do not merge. Create a separate assembly for each page and control [X] Merge all outputs to a single assembly "Project.Views" [X] Treat as library component (remove the AppCode.compiled file)
为什么会出现此错误,我们如何解决此问题?
这是错误的输出日志:
------ Publish started: Project: Project.WebUI, Configuration: Release Any CPU ------ Connecting to C:BuildArtifacts... Transformed Web.config using C:DevelopmentProject.WebUIWeb.Release.config into objReleaseTransformWebConfigtransformedWeb.config. Copying all files to temporary location below for package/publish: objReleaseAspnetCompileMergeSource. C:WINDOWSMicrosoft.NETFrameworkv4.0.30319aspnet_compiler.exe -v -p C:DevelopmentProject.WebUIobjReleaseAspnetCompileMergeSource -c C:DevelopmentProject.WebUIobjReleaseAspnetCompileMergeTempBuildDir C:Program Files (x86)Microsoft Visual Studio2017CommunityMSBuild15.0BinRoslyncsc.exe /out:objReleaseAssemblyInfoAssemblyInfo.dll /target:library PropertiesAssemblyInfo.cs PropertiesAssemblyInfo.cs(34,28): Error CS0103: The name 'VersionInformation' does not exist in the current context PropertiesAssemblyInfo.cs(35,32): Error CS0103: The name 'VersionInformation' does not exist in the current context PropertiesAssemblyInfo.cs(36,41): Error CS0103: The name 'VersionInformation' does not exist in the current context PropertiesAssemblyInfo.cs(3,7): Error CS0246: The type or namespace name 'Project' could not be found (are you missing a using directive or an assembly reference?)
显然在“发布”期间, csc.exe
尝试编译Project.WebUI
的AssemblyInfo.cs
,但只编译此文件。 因此无法获得对Project.Resources
的正确引用。
我的同事为我们带来的解决方案:
在与.SLN相同的文件夹中创建CommonAssemblyInfo.cs,并将您想要共享的属性放在那里。
一次一个项目:选择Properties组,右键单击Add> Existing Item,选择CommonAssemblyInfo.cs并从Add按钮菜单中选择Add As Link。 从AssemblyInfo.cs中删除这些属性。
上述就是C#学习教程:在AssemblyInfo.cs中引用项目时,发布预编译的ASP.NET失败分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/987133.html