Сбой ExcludeFromBuild в проекте веб-развертывания VS2010 - PullRequest
0 голосов
/ 29 ноября 2010

У меня есть проект веб-развертывания, который ведет себя плохо. Я унаследовал папку App_Data, которая содержит значительное количество .pdf файлов. Некоторые из имен файлов содержат недопустимые символы и являются слишком длинными. В моем файле проекта развертывания я включаю следующую ItemGroup в конце:

...
  <ItemGroup>
    <ExcludeFromBuild Include="$(SourceWebPhysicalPath)\**\*.pdf" />
  </ItemGroup>
</Project>

Но при сборке проекта я получаю следующую ошибку:

error : Copying file $([System.IO.Path]::Combine($(_WDPSourceWebPhysicalPath),
  App_Data\CWM2\393S097 Connection of an Embedded Network to elided's Network v1.pdf))
  to obj\Debug\Source\App_Data\CWM2\393S097 Connection of an Embedded Network to
  elided's Network v1.pdf failed. The path is not of a legal form.

Я пытался добавить символы подстановки в папку App_Data, но это просто не работает. Я предполагаю, что вполне возможно, что msbuild не может сопоставить эти файлы для исключения , потому что имя файла неверно. Помощь

Ответы [ 2 ]

1 голос
/ 04 ноября 2011

Я нашел обходной путь!Вы можете изменить файл «C: \ Program Files (x86) \ MSBuild \ Microsoft \ WebDeployment \ v10.0 \ Microsoft.WebDeployment.targets», заменив нерабочую часть на ту, которая была в версии 2008 года.Для этого выполните поиск

<Target Name="_CopyBeforeBuild"

и замените содержимое в теге xml следующим (взято из webdeploymentproject 2008)

<Target Name="_CopyBeforeBuild" Condition=" '$(EnableCopyBeforeBuild)' == 'true' or '@(ExcludeFromBuild)' != ''  ">
    <CreateItem Include="$(SourceWebPhysicalPath)\**\*.*" Exclude="@(ExcludeFromBuild)">
        <Output ItemName="_WebFiles" TaskParameter="Include" />
    </CreateItem>

    <RemoveDir Directories="$(CopyBeforeBuildTargetPath)"/>
    <MakeDir Directories="$(CopyBeforeBuildTargetPath)"/>
    <Copy SourceFiles="@(_WebFiles)" DestinationFolder="$(CopyBeforeBuildTargetPath)\%(_WebFiles.SubFolder)%(_WebFiles.RecursiveDir)" />

    <CreateProperty Value="$(CopyBeforeBuildTargetPath)">
        <Output TaskParameter="Value" PropertyName="_AspNetCompilerSourceWebPath" />
    </CreateProperty>
</Target>
1 голос
/ 17 декабря 2010

Я видел похожую ошибку с моим проектом развертывания. Я считаю, что в VS2010 Web Deployment Projects есть ошибка, которая не позволяет копировать любой файл, содержащий символ кавычки.

Я подал ошибку подключения здесь: https://connect.microsoft.com/VisualStudio/feedback/details/631995/

Единственный известный мне обходной путь - удалить символ кавычки из имени файла.

...