我在VS2017中有一个解决方案,它可以在Web项目(.net core 2.0)中编译TS文件,但不能在测试项目(.net core 2.0)中编译。
这是设计吗?
我无法在网络项目中找到任何设置'自动编译TS文件' (VS2017是否可以直接编译TS文件?),因此我无法检查测试项目上的设置是打开还是关闭。
EDIT 我确实发现这个网络项目有一个标签&<39; typescript build&#39;在项目的属性中,测试项目没有。 所以我猜这意味着testproject不适用于打字稿构建;但它能成为它吗?
我不想将我的测试项目更改为webproject我想,只是为了让它编译TypeScript文件。
答案 0 :(得分:1)
编译由导入项目的target
个文件指导。如果您打开Web项目文件(将.csproj
打开为xml),您将看到使用的sdk为Microsoft.NET.Sdk.Web
,而对于单元测试项目,sdk为Microsoft.NET.Sdk
。这些SDK指向c:\Program Files\dotnet\sdk\2.1.4\Sdks\
中的文件夹(或等效,具体取决于您的设置),这些文件夹将用于默认导入项目。
如果我们稍微深入了解与Typecript相关的Microsoft.NET.Sdk.Web
所包含的内容,我们会发现以下内容:
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets" Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.targets') AND '$(EnableTypeScriptNuGetTarget)' != 'true'" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.DotNetCore.targets" Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.DotNetCore.targets') AND '$(EnableTypeScriptNuGetTarget)' != 'true'" />
<Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
如果我们在单元测试项目文件(Project
)中的.csproj
标记内添加这些行,我们将包含Typescript的必要构建步骤。您还将获得项目中的Typescript属性页。
注意我没有对此进行过广泛测试,但它似乎有用,如果您有任何问题,请告诉我。