programing

게시할 때 TypeScript 파일을 포함하는 방법은 무엇입니까?

mailnote 2023. 6. 10. 09:37
반응형

게시할 때 TypeScript 파일을 포함하는 방법은 무엇입니까?

최근에 TypeScript를 사용하기 시작한 MVC 5.1 웹 애플리케이션이 있습니다.소스 매핑을 사용하고 싶어서 프로젝트에 .ts, .js, .js.map-files를 모두 포함시켰습니다.

응용 프로그램(예: 파일 시스템 또는 Azure)을 게시하면 .ts-파일이 아닌 .js 및 .js.min 파일만 복사됩니다.즉, 게시된 사이트에서 소스 매핑을 얻을 수 없습니다.

TypeScript 파일에 "Build Action": "TypeScriptCompile"이 있고 "Do not copy always" 및 "Copy always"로 "Copy to Output Directory"를 테스트했지만 .ts-파일은 게시되지 않습니다.

응용 프로그램을 게시할 때 어떻게 .ts-files를 포함할 수 있습니까?

(업데이트 2에 TypeScript 1.0.1이 설치된 VS2013 업데이트 2와 Web Essentials 2013을 사용하고 있습니다.)

저는 프로젝트(csproj) 파일을 편집하여 이를 달성했습니다..ts 파일(TypeScriptCompile 항목에 저장됨)을 Content 항목에 포함했습니다.

  <Target Name="AddTsToContent" AfterTargets="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'">
     <ItemGroup>
        <Content Include="@(TypeScriptCompile)" Condition="'$(Configuration)'=='Debug'"/>
     </ItemGroup>
  </Target>

참고: 이러한 조건 때문에, 여기에는 TypeScript 콘텐츠만 포함됩니다.Debug구성을 빌드합니다.

스타스 베르코프의 답변에 따르면, 조건부로 다음과 같은 내용을 포함하고 있습니다..ts소스 맵이 생성된 경우에만 파일이 생성됩니다(에서 구성된 대로).TypeScript Build프로젝트 속성 탭)을 클릭합니다.

<Target Name="AddTsToContent" AfterTargets="CompileTypeScript" Condition="'$(BuildingProject)' != 'false'">
  <ItemGroup>
    <Content Include="@(TypeScriptCompile)" Condition="'$(TypeScriptSourceMap)' == 'true'"/>
  </ItemGroup>
</Target>

이것을 마지막 요소로 배치했습니다.<Project>.csproj파일.

먼저, 게시된 디렉토리에서 파일이 있는지 확인할 수 있습니다.MSBuild를 사용하여 로컬로 복제할 수 있습니다.

msbuild path/to/your/solution.sln-or-project.csproj /p:OutputPath=path/to/outputFolder /p:Configuration=Release

이 명령을 실행한 후 다음 폴더에서 .ts 파일을 검색할 수 있습니다.

outputFolder/_bin/PublishedWebsites/YourProjectName/

프로젝트의 모든 출력은 MSBuild 태스크 "CopyFilesToOutputDirectory"를 실행하는 동안 출력 디렉터리에 복사됩니다.

MSBuild 명령을 실행한 후에도 "항상 복사" 또는 "새로 복사"로 표시된 .ts 파일이 여전히 복사되지 않으면 프로젝트 파일이 "파일을 출력 디렉터리에 복사" 태스크가 정의된 Microsoft에서 제공하는 공통 대상 파일을 가져오지 않을 수 있습니다.

이 경우 아래와 같이 .csproj 파일을 편집하여 적절한 파일에 가져오기 절을 추가합니다.

<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />

Microsoft를 실행한 후 MSBuild 명령을 다시 실행합니다.WebApplication.targets를 가져왔으며 게시하도록 표시된 파일이 이제 출력 폴더에 있어야 합니다.

@되었습니다. @Stanislav Berkov @Stanislav Berkov @Stanislav Berkov의 솔루션이 포함되었습니다.ts-filesOctopus 배포를 통해 솔루션을 배포할 때 문제가 발생하기 시작했습니다.ts-files다시 추가되었습니다.

회사의 인료완을 했습니다.msbuild빌드 서버에서 명령을 실행하고 출력 경로를 추가했습니다.

& "C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" "C:\Users\MyUser\Documents\Project\Solution\solution.sln" /t:"Clean;Build" /p:Configuration=Release /p:OutputPath="C:\Users\MyUser\Documents\Project\outputFolder" /p:AllowedReferenceRelatedFileExtensions=none /p:RunOctoPack=true /p:OctoPackEnforceAddingFiles=true /p:OctoPackNuGetProperties="env=Test;change=TestChange"

을 보고 ._PublishedWebsites inoutputFolder all.ts-files참습니다했석. 된 러그생을 보는 .nupkg all Octopack all에서 입니다.ts-files에는 파일이 되어 있지 .Octopack에는 TypeScript 파일이 포함되어 있지 않습니다.

https://help.octopus.com/t/octopack-doesnt-include-typescript-output-files/5009

파일을과 같이 했습니다.<file src="src/**/*.ts" />.

https://octopus.com/docs/packaging-applications/creating-packages/nuget-packages/using-octopack/octopack-to-include-buildevent-files

NuSpec 파일에 디렉터리를 재귀적으로 포함하는 방법

참조용으로 nucspec을 작성합니다.

<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
  <metadata>
    <id>Project.Web.$env$</id>
    <version>$version$</version>
    <authors>Administrator</authors>
    <owners>Administrator</owners>
    <licenseUrl>http://example.com</licenseUrl>
    <projectUrl>http://example.com</projectUrl>
    <requireLicenseAcceptance>false</requireLicenseAcceptance>
    <description>Project nuget packages</description>
    <releaseNotes />
  </metadata>

   <files>
      <file src="src/dist/" target="/" />
      <file src="src/**/*.ts" />
   </files>
</package>

https://learn.microsoft.com/en-us/nuget/reference/nuspec

저는 이것이 다른 누군가를 위한 시간을 절약하기를 바랍니다!

언급URL : https://stackoverflow.com/questions/24322063/how-to-include-typescript-files-when-publishing

반응형