Неправильное поведение с $ (SolutionDir) с msbuild в файле .csproj не так - PullRequest
4 голосов
/ 24 ноября 2010

У меня есть файл решения .sln, который ссылается на файл проекта .csproj, в котором задание после сборки выглядит примерно так:

<PropertyGroup>
    <PostBuildEvent>
        xcopy $(SolutionDir)\dir1\Somefle.xml  $(ProjectDir) /Y /I
    </PostBuildEvent>
</PropertyGroup>

Решение построено с использованием msbuild с задачей, подобной следующей:

<Target Name="CompileSolution">
    <MSBuild Projects="@(SolutionToBuild)" Targets="Rebuild" Properties="Platform=Any CPU" />
</Target>

Теперь вот странная часть:

Если я:

  1. запустить скрипт сборки (скажем, c: \ MyWorkingCopy)
  2. renameпапка с рабочей копией (скажем, c: \ YourWorkingCopy)
  3. снова запустите сценарий сборки

На шаге 3 xcopy потерпит неудачу, потому что это произойдет, потому что она будет пытатьсяскопируйте файл из "c: \ MyWorkingCopy" - что, конечно, не там, где сейчас находится файл решения.

Почему msbuild использует старый каталог Solution?И есть ли способ его сбросить?

(я использую .NET Framework 3.5)

1 Ответ

2 голосов
/ 07 января 2011

Может быть связано с файлом sln.cache, который создается msbuild при создании файла sln (это временный файл proj, созданный из файла sln), если он присутствует или если sln не был изменен в slnФайл .cache может быть использован ... Я не знаю, но думаю, что это может помочь.

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