2016-12-30 2 views
0

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

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

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

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 = "PrecompiledWeb\localhost_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 = "PrecompiledWeb\localhost_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, Test.XXX и т. Д., И все работает хорошо, пока вы не откроете решение в Visual Studio и не сохраните его. Visual Studio выполняет все ваши изменения и снова сталкивается с той же проблемой.

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

ответ

0

Вы можете создать проект веб-сайта, используя другую пользовательскую задачу AspNetCompiler MSBuild. как это:

dev.msbuild

<Project xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"> 
     <Target Name = "PrecompileWeb"> 
       <AspNetCompiler 
         VirtualPath = "/dev" 
         PhysicalPath = "D:\Project\WebSite1\" 
         TargetPath = "PrecompiledWeb\dev\" 
         Force = "true"   
         Debug = "False" 
         Updateable = "true"/> 
     </Target> 
</Project> 

Test.msbuild

<Project xmlns = "http://schemas.microsoft.com/developer/msbuild/2003"> 
      <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