动态设置Web应用程序项目的IISUrl

Ric*_*rds 13 msbuild visual-studio-2008 visual-studio

我有一个Web应用程序项目,我希望能够在一个完全独立的IIS站点上进行分支和开发,而不必在每次执行时都继续编辑vbproj IISUrl设置.我已经尝试添加一些标准属性的导入,所以我可以在WAP文件之外维护它们但是当我在元素中引用它们时它不喜欢它们.我怀疑这是因为IISUrl元素是放置非msbuild信息的一部分.

正如你在下面的代码中看到的那样,我试图在WebApp1.vbproj中的几个位置引用$(CustomUrl)但是当我打开VS时它并不喜欢它.

有任何方法可以解决这个问题,或者有没有人有更好的方法来分支Web应用程序项目.

CustomImport.vbproj

<Project 
    xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <CustomUrl>http://localhost/WebUrl_1</CustomUrl>
    </PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)

WebApp1.vbproj

<Import Project="CustomImport.vbproj"/>
<WebProjectProperties>
  <UseIIS>True</UseIIS>
  <AutoAssignPort>True</AutoAssignPort>
  <DevelopmentServerPort>1124</DevelopmentServerPort>
  <DevelopmentServerVPath>/</DevelopmentServerVPath>
  <IISUrl>$(CustomUrl)</IISUrl>
  <OverrideIISAppRootUrl>True</OverrideIISAppRootUrl>
  <IISAppRootUrl>$(CustomUrl)/</IISAppRootUrl>
  <NTLMAuthentication>False</NTLMAuthentication>
  <UseCustomServer>False</UseCustomServer>
  <CustomServerUrl>$(CustomUrl)</CustomServerUrl>
  <SaveServerSettingsInUserFile>False</SaveServerSettingsInUserFile>
</WebProjectProperties>
Run Code Online (Sandbox Code Playgroud)

Mik*_*ber 12

我相信我可能会在VS2010中找到解决方法.

右键单击VS2010中的项目,然后转到"属性".在"Web"选项卡中,取消选中"将服务器设置应用于所有用户(存储在项目文件中)".这样做是强制所有设置存储在[Web项目名称] .csproj.user文件中,而不是存储在项目文件本身中.(我的是一个C#项目,而不是VB,但我认为它的工作原理相同)这允许你在每台进行开发的机器上有不同的服务器设置,但同时共享其余的配置.

我不得不这样做,因为我在每台开发机器(工作站和笔记本电脑)上都使用SSL证书,因此项目URL不同,但我不想手动弄乱每台机器上的URL多​​次担心检查我的代码到源代码管理时的问题.

获取最新源后,在计算机上完成初始配置后,.user文件将保留配置.只要你没有将.user文件检查到源代码控制中,这似乎工作正常.

  • 这应该标记为正确答案,我也刚刚在 VS 2017 中对其进行了测试,以防有人很快遇到这个问题。 (2认同)

bro*_*xed 0

我多年来一直被同样的问题困扰。从 Visual Studio .NET (2003) 到现在 (VS 2010),该问题一直存在。我一直在寻找自动 URL 重命名的自动化解决方案,但没有成功。

为了避免这个问题,我一直在做的是更多地分支并拥有许多不同的工作区:

正在进行的项目的根分支 -> 开发团队的分支 -> 用于支持和长期代码完整性的分支(这是我最常用的分支) -> 设置了不同 URL 的我个人的自定义分支

我知道这不是最好的解决方案,但这是我能想到的最好的解决方案。