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

时间:2010-03-04 11:36:07

标签: visual-studio visual-studio-2008 msbuild

我有一个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>

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>

3 个答案:

答案 0 :(得分:11)

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

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

我必须这样做,因为我在每台开发机器(工作站和笔记本电脑)上使用SSL证书,因此项目URL不同,但我不想手动弄乱每台机器上的URL。在检查我的代码到源代码管理时,一旦担心它。

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

答案 1 :(得分:0)

几年来,我一直被同样的问题所困扰。从Visual Studio .NET(2003)到现在(VS 2010),问题一直存在。我已经搜索了自动URL重命名的自动化解决方案,但没有任何成功。

我一直在做的是避免这个问题,分支方式更多,并且拥有许多不同的工作空间:

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

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

答案 2 :(得分:0)

这篇关于以编程方式更改项目文件的文章可能会对您创建解决方案以自动更改这些设置有所帮助: Programmatically change Web project settings from dynamic port to static