在IntelliSense中将文件夹中的NESTED子项目视为IIS网站中的子文件夹(即从根项目继承web.config



有一个大型ASP。NET web项目,由多年来开发的数万个文件组成。

有效的层次结构如下:

SiteAll.sln
Siteroot.csproj
Siteweb.config
...
SiteSub1sub1.csproj
SiteSub1web.config <-- inherits from Siteweb.config at runtime;
tell IntelliSense to do the same
SiteSub1page.aspx
...
SiteSub1Sub1asub1a.csproj
...
SiteSub2sub2.csproj
...
Sitebin <-- all assemblies compiled to here

后端代码编译良好,项目运行page.aspx时没有错误,就像执行IIS时理解嵌套的web.config一样(即Siteweb.config配置,SiteSub1web.config继承自根配置(。

但是,在Visual Studio 2022中编辑page.aspx(作为Sub1项目的一部分(时,IntelliSense报告错误(即"未引用程序集"(,因为它不知道SiteSub1web.config是将从父web.config继承的子web配置。

还有其他问题,例如看不到/不理解<system.codedom>(根web.config更改以启用Roslyn(和/或Sitebin是加载程序集的位置(当将非SN共享程序集添加到<assemblies>时,会破坏aspx编辑器高亮显示(。

没有将所有项目移动到顶级文件夹:

  • 是否可以让Visual Studio应用web.config,就好像它实际上在运行一样
  • 同样,是否可以让Visual Studio理解"Sub1/Page.aspx"(而不是"Page.aspx"(是部署网站时的相对路径

不将所有项目文件移动到根文件夹的一个重要原因是,除了一些乏味的半自动化工作外,VS在这种情况下很难处理"显示所有文件"。在SDK风格的项目中否定路径也是痛苦的(缓慢和管理问题(。

右键单击项目,然后在项目属性中选择预生成事件/后生成事件命令行对话框。

您可以使用这些宏中的任何一个来指定文件的位置,或者在进行多项选择时获取输入文件的实际名称。这些宏不区分大小写。

https://learn.microsoft.com/en-us/visualstudio/ide/reference/pre-build-event-post-build-event-command-line-dialog-box?view=vs-2022#宏

最新更新