Microsoft.Web.Publishing.Tasks.dll에서 TransformXml 작업을로드 할 수 없습니다.


95

누구든지이 오류를 보았고 해결 방법을 알고 있습니까?

"TransformXml"작업은 어셈블리 C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll에서로드 할 수 없습니다.

파일 또는 어셈블리 'file : /// C : \ Program Files (x86) \ MSBuild \ Microsoft \ VisualStudio \ v11.0 \ Web \ Microsoft.Web.Publishing.Tasks.dll'또는 해당 종속성 중 하나를로드 할 수 없습니다. 시스템이 지정된 파일을 찾을 수 없습니다.

선언이 올바른지, 어셈블리 및 모든 해당 종속성을 사용할 수 있는지, 작업에 Microsoft.Build.Framework.ITask를 구현하는 공용 클래스가 포함되어 있는지 확인합니다.

SQL Server가 설치되어 있지 않을 때 문제가 있다고 다른 곳에서 읽었습니다. 하지만 SQL Express 2012 x64가 SP1과 함께 설치되어 있습니다. VS 2013 Professional도 실행 중입니다.

나는 문제없이 VS 2012 Express 에서이 똑같은 솔루션을 실행했습니다.


1
이것은 너겟 패키지 여야합니다. 내 프로젝트 내부의 숨겨진 참조가 마음에 들지 않습니다.
Jaider

Benjamin Scheibe의 답변을 올바른 것으로 표시해야합니다. 최고의 솔루션이 될 것 같다
BHuelse

답변:


163

Dai Bok 및 emalamisura가 제공 한 답변은 Visual Studio 2012를 사용하는 한 잘 작동합니다. VS 2013의 경우에도 실패합니다. 모든 버전의 Visual Studio에서이 작업을 수행하려면 다음을 수행해야합니다.

  • 로드에 실패한 프로젝트의 프로젝트 파일 (.csproj) 열기
  • 검색 <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.targets" />
  • 다음으로 변경 <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\Web\Microsoft.Web.Publishing.targets" />
  • 프로젝트 다시로드

그러면 올바른 버전의 Visual Studio가 동적으로 적절하게 설정됩니다.


2
나는 당신의 솔루션 Benjamin을 좋아하지만, 내가 가진 문제는 v11 폴더가 누락되었다는 것입니다. 아마도 우리는 vs2010을 사용하는 사람들이 있고 아직 vs2012로 업그레이드하지 않았기 때문에 가능합니다
Dai Bok

7
이로 인해 올바른 경로에서 시작했지만 <UsingTask TaskName = "TransformXml"...> 노드를 변경했습니다. 내 AssemblyFile이 잘못된 버전을 사용하고있었습니다. 여기서 버전을 변경해야합니다. 또 다른 옵션은 버전을 명시 적으로 설정하는 대신 버전 매크로를 사용하는 것입니다.
Scott

5
$(VisualStudioVersion)이전 버전을 반환합니다 :(
Jaider

1
매개 변수가 될 수 있습니다 : stackoverflow.com/questions/20002532/…
Jaider

2
VS2015에서 VS2017로 업그레이드하는 동안 완벽하게 작동합니다. 이제 두 IDE에서 솔루션을 열 수 있습니다.
Yury Schkatula

29

내 작업을 수행하기 위해 방금 v10.0폴더를 복사 하고 이름을으로 변경했는데 v11.0그때부터는 잘 작동하는 것 같습니다. 지금은 이것이 빠른 수정입니다.

이것이 최선의 해결책은 아니고 작동하지만 Windows 7 용 Microsoft Windows SDK 및 .NET Framework 4 Windows 7 및 .NET Framework 4 용 Windows SDK를 설치하려고 했지만 시간이 오래 걸립니다. 다운로드.


1
v10.0에서 'Web'폴더가 보이지 않았습니다. 그래서 v12.0 폴더에서 v11.0 폴더로 복사했습니다.
Sundeep

9

저는 며칠 동안 빌드 서버에서이 문제와 싸우고 있었기 때문에 제가 찾은 해결책을 문서화 할 것이라고 생각했습니다. 첫째, 내 빌드 서버 에는 웹 게시 확장이 설치되어 있습니다. TransformXml 작업을 웹 응용 프로그램 프로젝트 내에서 마음껏 사용할 수 있습니다.

웹 응용 프로그램 프로젝트 외부 에서 사용하기 위해 UsingTask 요소를 내 프로젝트에 추가하고 ms 빌드 속성을 사용하여 올바른 위치를 지정하려고했습니다 (Benjamin이 설명했듯이). 그러나 그들은 내 빌드 서버에 없었습니다 (빌드 서버의 파일 시스템에 쉽게 액세스 할 수있는 사람들은 아마도 이것을 건너 뛰고 Visual Studio에 관련 패키지를 설치할 수 있습니다). 비주얼 스튜디오 버전을 하드 코딩하기까지했지만 항상 오류가 발생했습니다.

마침내 포기하고 로컬 PC에서 DLL을 가져 왔습니다.

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.Publishing.Tasks.dll
C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Web\Microsoft.Web.XmlTransform.dll

소스 제어에 업로드하고 해당 폴더를 내 빌드의 작업 공간에 추가했습니다 (빌드 정의 편집-> 소스 설정-> 소스 제어 폴더). 거기에서 폴더를 참조 할 필요도 없습니다. 다음은 UsingTask의 모습입니다.

  <UsingTask TaskName="TransformXml" AssemblyFile="Microsoft.Web.Publishing.Tasks.dll" />

이제 TransformXml 작업을 모든 프로젝트의 내 마음대로 사용할 수 있습니다.


9
MSBuild.Microsoft.VisualStudio.Web.targets의 패키지는 VS가 설치되지 구축하는 데 필요한 목표를 가지고있다. 예 : <UsingTask TaskName = "TransformXml"AssemblyFile = "packages \ MSBuild.Microsoft.VisualStudio.Web.targets.11.0.2.1 \ tools \ VSToolsPath \ Web \ Microsoft.Web.Publishing.Tasks.dll"/>. 참조 자세한 내용은 블로그를
moonpatrol

1
안녕하세요 @moonpatrol, 당신은 대답을해야합니다. 왜냐하면 제가이 방식을 선호하기 때문입니다 – 패키지를 설치하고 참조 – 절대적으로 보편적 인 솔루션 :-) 방금 시도했고 완벽하게 작동합니다. 어쨌든 감사합니다! 대답하면 나에게 핑만하면 투표하겠습니다.
Tengiz

9

문제를 해결하려면

  1. 컴퓨터에서 Visual Studio 설치 프로그램 찾기
  2. 클릭하거나 탭하여 설치 프로그램을 시작한 다음 수정을 선택합니다.
  3. 개별 구성 요소 화면에서 Asp.net 및 웹 개발 도구를 선택한 다음 수정 / 설치를 선택합니다.

이것은 언급 된 경로에 dll을 생성하므로 문제가 해결되었습니다.


2
VS2017을 사용하고 있으며이 단계를 수행해도 해당 파일이 생성되지 않습니다. 나는 그것을 추가 한 다른 것 (또는 ASP.net 및 웹 개발 도구와 함께)을 선택했을 것입니다. 하지만 확실하지 않습니다 :(
Kris

나는 그것만 선택했습니다. 웹 관련 구성 요소를 선택하고 설치하십시오. 그래도 행운을 빕니다.
Vinodhini Ramasamy

전체 웹 워크 플로를 시도했지만 여전히 해당 파일이 없습니다. 이 솔루션이 너무 가깝다고 생각합니다. 내가 구성 요소를 설치하려면 내 HDD에 제한된 공간이 있기 때문에이 핀이 지적 될 수 있으면 좋겠다
로버트 스나이더에게

4
VS2017의 경우 Tools → Get Tools and Features... → Individual Components: Windows 10 SDK (10.0.14393.0) and ASP.NET and web development tools . 이것은 트릭을 한 것 같습니다.
John Jones

6

VS2019의 경우

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion

나는 대체 MSBuildToolsVersion와 함께 VisualStudioVersion.


이 문서 "에 의해 docs.microsoft.com/visualstudio/msbuild/... "변경 MSBuildToolsVersionVisualStudioVersion 나는 이렇게 잘 작동하는 인적 또는 "변경 $ (MSBuildExtensionsPath32) \ 마이크로 소프트 \으로 VisualStudio \ 브이 $ (VisualStudioVersion) "
김 기 원

5

VisualStudio 폴더에는 v12.0, v14.0 및 v15.0 만 있기 때문에 프로젝트 파일을 편집하고 참조 경로를 v10.0에서 v14.0으로 변경합니다. 그런 다음 프로젝트가 성공적으로 빌드됩니다.

전에:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

후:

<UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v14.0\Web\Microsoft.Web.Publishing.Tasks.dll" />

2

이에 대한 정답은 해당 프로젝트를 언로드 한 다음 csproj 파일을 편집하고 10.0 경로를 참조하는 항목을 찾은 다음 대신 11.0을 가리 키도록 변경하는 것입니다.


+ 1입니다. 한 dev 컴퓨터에서 다른 컴퓨터로 작업 공간 폴더를 복사 할 때이 문제가 발생했습니다. 두 번째 개발 시스템에는 v10이 아닌 v11이 설치되었습니다. 따라서 v10 폴더는 비어 있습니다.
maplemale 2014-04-08

1

작동하려면 두 가지가 필요합니다.

1) 빌드 서버 https://www.visualstudio.com/pl/thank 에서 선택한 "웹 개발 빌드 도구"옵션을 사용하여 Visual Studio 빌드 도구 (전체 Visual Studio가 필요하지 않고 VS 빌드 도구 만 필요)를 설치합니다. -you-downloading-visual-studio /? sku = BuildTools & rel = 15

2) Microsoft.Web.Publishing.Tasks.dll의 경로가 올바른지 확인하십시오.

  <UsingTask TaskName="TransformXml" AssemblyFile="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(MSBuildToolsVersion)\Web\Microsoft.Web.Publishing.Tasks.dll" />

1

나를 위해 그것은 NuGet 패키지 MSBuild.Microsoft.VisualStudio.Web.targets v14.0.0.3에 대한 참조를 추가하여 작동하기 시작했습니다.

패키지 작성자가 언급 한대로 UsingTask 요소를 프로젝트 파일에 추가 할 필요도 없습니다.

https://github.com/pdonald/nuget-webtargets

NuGet 패키지를 설치하기 만하면됩니다. 패키지는 도구 폴더의 대상 파일을 사용하도록 $ (VSToolsPath) 속성을 자동으로 설정합니다.

그런 다음 TransformXml 및 패키지에 정의 된 기타 작업 (예 : app.config 변환)을 사용할 수있었습니다.

  <Target Name="app_config_AfterCompile" AfterTargets="AfterCompile" Condition="Exists('app.$(Configuration).config')">
    <!--Generate transformed app config in the intermediate directory-->
    <TransformXml Source="app.config" Destination="$(IntermediateOutputPath)$(TargetFileName).config" Transform="app.$(Configuration).config" />
    <!--Force build process to use the transformed configuration file from now on.-->
    <ItemGroup>
      <AppConfigWithTargetPath Remove="App.config" />
      <AppConfigWithTargetPath Include="$(IntermediateOutputPath)$(TargetFileName).config">
        <TargetPath>$(TargetFileName).config</TargetPath>
      </AppConfigWithTargetPath>
    </ItemGroup>
  </Target>

0

누군가 SDK 스타일 csproj를 사용하는 경우 빌드 서버에 Visual Studio를 설치하지 않고도이를 수행 할 수 있습니다.

  1. 먼저 프로젝트에 SlowCheetah nuget 패키지 를 설치해야 합니다. 설치하면 SDK 스타일 프로젝트에 다음이 표시됩니다.

    <PackageReference Include="Microsoft.VisualStudio.SlowCheetah" Version="3.2.20">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    
  2. 그런 다음 GeneratePathProperty = "true" 속성 을 추가해야 합니다 (아래 참조). 이것은 시스템에서 너겟 패키지가 복원되는 경로를 파악하는 데 도움이되기 때문에 다음 부분에서 매우 중요합니다. George Dangl은 여기에 있는 그의 기사 에서 설명합니다 .

    <PackageReference Include="Microsoft.VisualStudio.SlowCheetah" Version="3.2.20" GeneratePathProperty="true">
            <PrivateAssets>all</PrivateAssets>
            <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
    </PackageReference>
    
  3. SlowCheetah 타겟을 프로젝트로 가져옵니다.

    <Import Project="$(PkgMicrosoft_VisualStudio_SlowCheetah)\build\Microsoft.VisualStudio.SlowCheetah.targets" />
    
  4. 이제 대상 명령 (이 경우 게시 후)을 사용하여 일부 사용자 지정 변환을 적용 할 수 있습니다. 필요한 경우 아래 예제의 변수를 사용하는 대신 항상 아래 파일 이름을 하드 코딩 할 수 있습니다.

    <Target Name="AfterPublishs" AfterTargets="Publish">
         <TransformTask Source="Web.config" Transform="Web.$(Configuration).MyCustomTransformFile.config" Destination="$(PublishDir)\Web.config" />
    </Target>
    

전에 SlowCheetah 를 사용하지 않았다면 확인해 보는 것이 좋습니다. 변환 파일을 더 쉽게 미리 볼 수있는 Visual Studio 확장이 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.