gpt4 book ai didi

visual-studio - 从 TypeScript Web Publish 中排除转译/不存在的 .JS 文件

转载 作者:搜寻专家 更新时间:2023-10-30 20:58:04 24 4
gpt4 key购买 nike

尝试在 Visual Studio 2015 Update 2 中通过网络发布 TypeScript 项目时;构建成功,但打包/发布失败:

Error: Copying file typescript-filename.js to obj\Release\Package\PackageTmp\typescript-filename.js failed. Could not find file 'typescript-filename.js'.

当项目为 TypeScript 中间/输出文件指定目录时出现错误。要重现此错误,只需在新的 Visual Studio TypeScript HTML 应用程序项目的根目录中创建一个 tsconfig.json 文件,其中包含以下内容:

{
"compilerOptions": {
"outDir": "transpiled"
}
}

如果不使用 outDir 中间/输出目录选项,我会发布我的源文件,这是我不想要的。 (此外,项目输出与源代码混在一起,项目变得一团糟。)

如何从打包/发布中排除这些 TypeScript 转译文件?

由于我运行 WebPack 来创建单独的可部署 .JS 捆绑文件(包含在我的项目中并成功执行打包/发布),我实际上不希望包含任何这些转译文件。


其他研究:

我已经尝试在解决方案资源管理器中排除 .TS 源,将其设置为无/不复制。但真正奇怪的是:

在我项目中的 .TS 文件上“无”和“TypeScript 编译”(设置或取消设置)之间的任何更改将允许我的项目发布到服务器成功,并且没有部署任何转译的 .TS/.JS 文件; 但只有在我做出另一项更改 之后才能重新构建项目。然后又出现了丢失.JS文件的错误。

因此,实际上,我可以执行一些巫术来强制发布,但我仍然很想解决这个问题。

不知何故,C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Web\Transform\Microsoft.Web.Publishing.AspNetCompileMerge.targets 到达第 615 行的列表在变量 @(FilesForPackagingFromProject) 中,(AFAIK)在构建或打包过程中的任何时候都不存在的文件。就好像其中一个目标直接用 .JS 替换任何 .TS 扩展名,如果它只是运行构建,但不考虑构建中实际发生的事情。

<CopyPipelineFiles PipelineItems="@(FilesForPackagingFromProject)"
SourceDirectory="$(WebPublishPipelineProjectDirectory)"
TargetDirectory="$(_PreAspnetCompileMergeSingleTargetFolder)"
SkipMetadataExcludeTrueItems="True"
UpdateItemSpec="True"
DeleteItemsMarkAsExcludeTrue ="True">

最佳答案

我和你有同样的问题,我用这个 approach 解决了它:

  1. 编辑导致错误的 .targets 文件(您可以在输出面板中找到它)

  2. 将链接中提供的 xml 粘贴到节点中:

    <Target Name="CustomExcludeFiles" 
    DependsOnTargets="$(ExcludeFilesFromPackageDependsOn)"
    BeforeTargets="ExcludeFilesFromPackage">

    <Message Text="Custom exclude..." Importance="high"></Message>
    <WriteLinesToFile Condition="$(EnablePackageProcessLoggingAndAssert)"
    Encoding="utf-8"
    File="$(PackageLogDir)\CustomExcludeFilesBefore.txt"
    Lines="@(FilesForPackagingFromProject->'
    From:%(Identity)
    DestinationRelativePath:%(DestinationRelativePath)
    Exclude:%(Exclude)
    FromTarget:%(FromTarget)
    Category:%(Category)
    ProjectFileType:%(ProjectFileType)')" Overwrite="True" />

    <ItemGroup>
    <FilesForPackagingFromProject Remove="@(FilesForPackagingFromProject)" Condition="!Exists('%(FullPath)')" />
    </ItemGroup>
    <WriteLinesToFile Condition="$(EnablePackageProcessLoggingAndAssert)"
    Encoding="utf-8"
    File="$(PackageLogDir)\CustomExcludeFilesAfter.txt"
    Lines="@(FilesForPackagingFromProject->'
    From:%(Identity)
    DestinationRelativePath:%(DestinationRelativePath)
    Exclude:%(Exclude)
    FromTarget:%(FromTarget) \
    Category:%(Category)
    ProjectFileType:%(ProjectFileType)')" Overwrite="True"/>
    </Target>
    1. 保存,重新启动 Visual Studio 并重新发布

关于visual-studio - 从 TypeScript Web Publish 中排除转译/不存在的 .JS 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37004925/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com