2009-11-19 32 views
2

我有一个实际上没有ASP.Net或C#的C#web应用程序项目。它只是一个带有一些Javascript,CSS和一些图像的单个html页面。如何在没有可编译代码的C#项目上使用MSBuild

我想使用MSBuild将此应用程序的一个版本部署到具有缩小的JS和CSS的输出文件夹。

使用以下代码,我得到一个错误“CSC:fatal error CS2008:No inputs specified。”。我猜是因为没有实际的C#代码来编译,但我不确定。

<?xml version="1.0" encoding="utf-8" ?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="Build"> 
    <PropertyGroup> 
     <CssTidy>..\build_tools\csstidy.exe</CssTidy> 
    </PropertyGroup> 

    <PropertyGroup> 
     <DeploymentFolder>Test\</DeploymentFolder> 
     <SourceProject>..\..\Test\Test.csproj</SourceProject> 
    </PropertyGroup> 

    <Import Project="Common.Web.targets" /> 

    <ItemGroup> 
     <CssFiles Include="..\..\Test\CSS\stylesheet.css" /> 
     <ScriptFiles Include="..\..\Test\JavaScript\javascript.js"/> 
    </ItemGroup> 

    <Target Name="compress_css"> 
     <Attrib Files="%(CssFiles.FullPath)" ReadOnly="false"/> 
     <Exec Command="$(CssTidy) %(CssFiles.FullPath) %(CssFiles.FullPath) --template=highest" /> 
    </Target> 

    <Target Name="compress_js"> 
     <Attrib Files="%(ScriptFiles.FullPath)" ReadOnly="false"/> 
     <JSCompress Files="%(ScriptFiles.FullPath)"></JSCompress> 
    </Target> 

    <Target Name="call_targets"> 
     <CallTarget Targets="compress_css"/> 
     <CallTarget Targets="compress_js"/> 
    </Target> 
</Project> 

我该如何做到这一点?

+0

这有帮助吗? http://stackoverflow.com/questions/986221/tfs-build-server-csc-fatal-error-cs2008-no-inputs-specified – KMoraz

回答

0

“common.web.targets”里面有什么?我假设该错误是从该文件中的目标(或其导入的另一个目标)生成的。

4

您可以覆盖CoreCompile目标并在此处不执行任何操作:<Target name="CoreCompile" />。这将跳过它的活动并继续前进。您可能需要重写其他目标以避免错误。

+0

这是我的关键 - 我可以通过添加 谢谢 – antlersoft

+1

如果这解决了您的问题,为什么您没有标记此答案? –

+0

在我的.csproj文件中添加了后,现在出现此错误: 无法将文件“obj \ Release \ MyProject.dll”复制到“。\ MyProject.dll”中。找不到文件'obj \ Release \ MyProject.dll' 看起来项目仍然试图将程序集复制到项目属性中的输出路径。 还有什么需要做的来阻止呢? – Laurence

1

在文件的顶部,你有DefaultTargets =“构建”

更改“建设”到“call_targets”,你应该是好去。

0

快速解决这个问题的方法是在项目中添加一个虚拟页面。之后的构建会起作用。

相关问题