正如标题所说:我通过 >> 窗口激活了这个选项Tools
,但是文件没有在构建时编译Options
。Web Essentials
没有警告或错误,专用于 Web Essentials 的输出面板显示有关编译的消息,但实际上什么也没做。没有实际编译出现在输出中的那些文件。
有没有办法找出它到底在做什么?我对项目文件进行了手动修改。不过,我还没有在项目文件中看到任何与 Web Essentials 相关的内容。
有没有其他方法可以解决这个问题?
正如标题所说:我通过 >> 窗口激活了这个选项Tools
,但是文件没有在构建时编译Options
。Web Essentials
没有警告或错误,专用于 Web Essentials 的输出面板显示有关编译的消息,但实际上什么也没做。没有实际编译出现在输出中的那些文件。
有没有办法找出它到底在做什么?我对项目文件进行了手动修改。不过,我还没有在项目文件中看到任何与 Web Essentials 相关的内容。
有没有其他方法可以解决这个问题?
即使使用 WebEssentials 来控制是否所有文件都应该在构建工程上编译,它也可能会给您带来一些问题:
如果您使用的是构建机器、与 TFS 的持续集成等。您的构建过程将不会应用相同的规则,因为 WebEssentials 是一个 Visual Studio 扩展,构建过程将无法访问;
您需要重新构建项目以测试您的更改,除非您还将 WebEsentials 选项“保存时编译 TypeScript”设置为 true,如果您也在构建期间进行编译,这可能有点多余;
解决方案:
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
.
.
.
<Import Project="$(VSToolsPath)\TypeScript\Microsoft.TypeScript.targets" />
这足以确保在构建期间使用默认选项调用 TypeScript 编译器来构建所有 .js 文件。
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
.
.
.
<TypeScriptTarget>ES5</TypeScriptTarget>
<TypeScriptIncludeComments>false</TypeScriptIncludeComments>
<TypeScriptSourceMap>false</TypeScriptSourceMap>
</PropertyGroup>
此设置还允许您对每个项目进行不同的设置,这有利于灵活性。
在构建过程中,将使用当前构建定义中定义的设置调用 TypeScript 编译器。例如,当您在上面的设置中将 TypeScriptTarget 设置为 ES5 时,执行的命令行将类似于
tsc.exe --target ES5
请注意,只会处理标有 BuildAction = TypeScriptCompile 的文件。您可以在解决方案资源管理器的属性面板中检查/更改文件的 BuildAction: