Вопрос

Я хотел бы знать, как компилировать файлы ASPX после сборки в решении SharePoint, чтобы увидеть ошибки времени выполнения e.g.Отсутствует ресурс (при переводе страницы используя ресурсы).

Когда я добавляю задачу AspnetCompiler в мою csproj, как это (только показывая конец файла проекта):

...
<PropertyGroup>
    <VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
    <VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
  </PropertyGroup>
  <Import Project="$(VSToolsPath)\SharePointTools\Microsoft.VisualStudio.SharePoint.targets" Condition="'$(VSToolsPath)' != ''" />
  <Target Name="AfterBuild">
    <AspNetCompiler VirtualPath="temp" PhysicalPath="$(ProjectDir)" />
    <!-- ToolPath="C:\Windows\Microsoft.NET\Framework64\v2.0.50727" -->
  </Target>
  <PropertyGroup>
    <PostBuildEvent>
    </PostBuildEvent>
  </PropertyGroup>
</Project>
.

Тогда при создании проекта я получаю следующую ошибку в файле ASPX:

не удалось загрузить файл или сборку '$ sharepoint.project.assemblylname $' или одна из его зависимостей.Система не может найти указанный файл.

Очевидно, что компилятор ASP пытается создать файлы ASPX в каталоге проекта, которые не имеют замененных токенов.Тем не менее, я не смог доработать задачу, поэтому она будет работать на полях с замененными токенами.Мои знания MSBUILD ограничены, что может быть проблемой.

Это было полезно?

Решение

Единственный способ сделать замену токена - создать пакет WSP, потому что возникает замена.Затем решение для создания WSP, распаковка его к целевой папке, создайте новый каталог там, который называется «BIN», переместите DLL в каталог Bin, а затем запускайте компилятор ASPNET в целевой папке.Весь процесс можно сделать в файле MSBUILD (CSPROJ).Это мое решение - в конце файла CSPROJ после импортированных целей SharePoint:

  <Import Project="$(VSToolsPath)\SharePointTools\Microsoft.VisualStudio.SharePoint.targets" Condition="'$(VSToolsPath)' != ''" />
  <PropertyGroup>
    <!-- schedule creating the package in the build, the task is defined in sharepoint targets -->
    <BuildDependsOn>$(BuildDependsOn);CreatePackage</BuildDependsOn>
    <PostBuildEvent>
    </PostBuildEvent>

    <!-- define file/folder properties -->
    <ExpandDest>$(TargetDir)_wsp</ExpandDest>
    <WspBinPath>$(ExpandDest)\bin</WspBinPath>
    <WspPath>$(TargetDir)MyProject.wsp</WspPath>    
  </PropertyGroup>

  <!-- override "after build" target, it must depend on the package creation, 
       which ensures that the target runs after we have the wsp package ready -->
  <Target Name="AfterBuild" DependsOnTargets="CreatePackage">
    <!-- create the folder where we unpack our wsp -->
    <MakeDir Directories="$(ExpandDest)" />    
    <!-- use expand to unpack the wsp -->
    <Message Text="$(ExpandWsp)" Importance="high" />
    <Exec Command="expand &quot;$(WspPath)&quot; -F:* &quot;$(ExpandDest)&quot;" />

    <!-- create the "bin" folder -->
    <MakeDir Directories="$(WspBinPath)" />
    <!-- move all dlls and xmls from the root to the bin folder -->
    <Exec Command="move /Y &quot;$(ExpandDest)\*.dll&quot; &quot;$(WspBinPath)&quot;" />
    <Exec Command="move /Y &quot;$(ExpandDest)\*.xml&quot; &quot;$(WspBinPath)&quot;" />

    <!-- run the aspnet compiler on the wsp folder,
         the tool path param ensures that .net 2 compiler will be used,
         we need that because we compile sharepoint 2010 which is .net 3.5
         and the latest aspnet compiler for .net 3.5 is in .net 2 -->
    <AspNetCompiler 
      VirtualPath="/"
      PhysicalPath="$(ExpandDest)"
      Clean="true"
      ContinueOnError="false"
      ToolPath="C:\Windows\Microsoft.NET\Framework\v2.0.50727" />
  </Target>
</Project>
.

<Сильные> Редактировать: Процесс немного сложнее.Согласно вашему собственному проекту, вы должны перемещать несколько файлов в определенные папки.По сути, следуйте тому, что вам говорят компилятор.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top