Visual Studio переписать конфигурацию решения для веб-узла

У меня есть решение с проектом веб-сайта. Существует три конфигурации пользовательских решений: Dev, Test, Prod. Однако веб-сайт проекта не имеет .csproj файл и нет никакого способа (или я не могу найти его), чтобы использовать конфигурации для проекта веб-сайта.
Я использую MSBuild для построения решения:

MSBuild.exe MySolution.sln /m /p:Platform=x86;TargetFrameworkVersion=v4.6.2;OutputPath=bin;Configuration=Dev /ToolsVersion:14.0 

Как. sln-файл не содержит никакой информации о моей конфигурации Dev для проекта веб-узла, есть только отладка и выпуск «разделы»:

Project("{E24C65DC-7377-472B-9ABA-BC803B73C61A}") = "Web", "Web", "{1F81A0DB-6FF4-4F89-B988-6D327797C4FD}"
ProjectSection(WebsiteProperties) = preProject
    TargetFrameworkMoniker = ".NETFramework,Version%3Dv4.6.2"
    ProjectReferences = "{12A625AA-8B5A-4336-AA4A-3630AAB3A27D}|MyLib.dll;"
    Debug.AspNetCompiler.VirtualPath = "/localhost_54141"
    Debug.AspNetCompiler.PhysicalPath = "Web"
    Debug.AspNetCompiler.TargetPath = "PrecompiledWeblocalhost_54141"
    Debug.AspNetCompiler.Updateable = "true"
    Debug.AspNetCompiler.ForceOverwrite = "true"
    Debug.AspNetCompiler.FixedNames = "false"
    Debug.AspNetCompiler.Debug = "True"
    Release.AspNetCompiler.VirtualPath = "/localhost_54141"
    Release.AspNetCompiler.PhysicalPath = "Web"
    Release.AspNetCompiler.TargetPath = "PrecompiledWeblocalhost_54141"
    Release.AspNetCompiler.Updateable = "true"
    Release.AspNetCompiler.ForceOverwrite = "true"
    Release.AspNetCompiler.FixedNames = "false"
    Release.AspNetCompiler.Debug = "False"
    VWDPort = "54141"
    SlnRelativePath = "Web"
    StartServerOnDebug = "false"
EndProjectSection

EndProject

И веб-сайт не строится.

ОК, я могу вручную редактировать файл решения и изменить/добавить Dev.XXXX, тест.XXX etc связанные настройки и все работает хорошо, пока вы не откроете решение в Visual Studio и сохранить его. Visual Studio разряжает все изменения, и вы снова сталкиваетесь с той же проблемой.

В качестве обходного пути я могу создать копию .sln и вручную синхронизировать его с исходным решением. У кого-нибудь есть идея получше?

1 ответ

  1. Проект веб-узла можно построить с помощью другой пользовательской задачи AspNetCompiler MSBuild. вроде этого:

    разработка.программа MSBuild

    <Project >
            <Target Name = "PrecompileWeb">
                    <AspNetCompiler
                            VirtualPath = "/dev" 
                            PhysicalPath = "D:\Project\WebSite1\"
                            TargetPath = "PrecompiledWeb\dev\"
                            Force = "true"           
                            Debug = "False"
                            Updateable = "true"/>
            </Target>
    </Project>
    

    Тест.программа MSBuild

    <Project >
                <Target Name = "PrecompileWeb">
                        <AspNetCompiler
                                VirtualPath = "/test" 
                                PhysicalPath = "D:\Project\WebSite1\"
                                TargetPath = "PrecompiledWeb\test\"
                                Force = "true"           
                                Debug = "False"
                                Updateable = "true"/>
                </Target>
        </Project>
    

    построить команду, как это:

    MSBuild.exe dev.msbuild /m /p:TargetFrameworkVersion=v4.6.2;OutputPath=bin /ToolsVersion:14.0