MSBuild: каталог OutputPath пуст - PullRequest
2 голосов
/ 11 мая 2011

Я хочу развернуть свой сайт ASP.NET MVC и иметь следующий скрипт.

<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\MyProjName\MyProjName.csproj"/>
  <PropertyGroup>
    <NewInstallDir>C:\DeployFolder\</NewInstallDir>
    <BinDir>$(NewInstallDir)bin\</BinDir>
  </PropertyGroup>
  <Target Name="Build">
    <MSBuild Projects="..\MySlnName.sln"
        Properties="Configuration=Release;Platform=Any CPU;OutputPath=$(BinDir)" />
    <Copy SourceFiles="@(Content->'..\MyProjName\%(RelativeDir)%(FileName)%(Extension)')"
        DestinationFiles="@(Content->'$(NewInstallDir)%(RelativeDir)%(FileName)%(Extension)')" />
    <Copy SourceFiles="@(None->'..\MyProjName\%(RelativeDir)%(FileName)%(Extension)')"
        DestinationFiles="@(None->'$(NewInstallDir)%(RelativeDir)%(FileName)%(Extension)')" />
    <MakeDir Directories="@(Folder->'$(NewInstallDir)%(RelativeDir)')" />
  </Target>
</Project>

Основная идея.

Я скопировал двоичный файл в C: \ DeployFolder (взять структуру папки из источников). Я создаю свою DLL в C: \ DeployFolder \ Bin (у меня нет этой папки в папке источников, поэтому мне нужно отдельно скопировать это).

Я запускаю свой скрипт - все работает вместо копирования DLL в OutputPath. Такие же скрипты работают для другого проекта asp.net mvc. Я понятия не имею, что не так в этом случае.

Я завершаю эту проблему с обходным путем, но я хотел бы знать, что не так с этим сценарием.

1 Ответ

5 голосов
/ 11 мая 2011

Первое, что я бы попробовал, это заменить использование устаревшего $ (OutputPath) на $ (OutDir). С тех пор, как я увидел эту ошибку, 9 раз из 10 это связано с несоответствием между запрошенной платформой / конфигурацией и тем, как на самом деле определен конкретный проект. Позаботьтесь о том, чтобы отслеживать несоответствие между «Любым ЦП» (с пробелом), предпочитаемым файлами решения, и «AnyCPU», фактически используемым внутри файлов проекта для $ (Platform). Некоторые мастера проектов только устанавливают платформу "x86" или иным образом пропускают AnyCPU, что может привести к тому, что OutputPath будет пустым.

Кроме того, подход к импорту файла проекта, а затем к созданию решения (предположительно, включающего тот же проект) несколько отличается от центра. Рассмотрите возможность внесения желаемых изменений развертывания в сам файл проекта с помощью импорта. Вы можете подключиться к существующим целям сборки в нужном месте или добавить дополнительную цель.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...