使用MSBuild发布包含嵌入资源的网站

4

我正在使用命令行调用msbuild来生成网站的发布版本,使用以下命令:

msbuild.exe /t:ResolveReferences;Compile;_CopyWebApplication /p:OutDir=dir/bin/ 
    /p:WebProjectOutputDir=dir/ /p:Debug=false /p:Configuration=Release 
    Website.csproj

除了嵌入资源不在Website.dll中,其他都很好。如果我通过Visual Studio发布,它会包括嵌入的资源。我是否缺少某个标志?

2个回答

4
需要添加一个额外的目标,方法如下:
msbuild.exe /t:PrepareResources;ResolveReferences;Compile;_CopyWebApplication 
    /p:OutDir=dir/bin/ /p:WebProjectOutputDir=dir/ /p:Debug=false 
    /p:Configuration=Release Website.csproj

你是如何解决这个问题的?你有捕获VS构建输出吗?怎么做的? - Ed Blackburn
我让VS输出构建过程的详细信息:工具 > 选项 > 项目和解决方案 > 构建和运行 > MSBuild项目构建输出详细程度。然后我查看了与资源相关的每个目标,并将其添加进去。顺便说一句,我发现现在似乎需要多于一个参数。我已经更新了上面的答案。 - Garry Shutler
它们是否都从.csproj下的单个目标调用?可能有一个抽象的目标可以调用,而不是所有这些单独的目标。 - Andrew Bullock
尝试使用 microsoft.common.targets 和 microsoft.csharp.targets。 - Andrew Bullock

4

看起来

/t:PrepareResources

调用您已添加到msbuild调用的所有目标,尝试一下。
以下是被调用的前几个级别。
PrepareResources 
    PrepareResourceNames
        AssignTargetPaths
        SplitResourcesByCulture
        CreateManifestResourceNames
        CreateCustomManifestResourceNames
    ResGen
        ResolveAssemblyReferences
        SplitResourcesByCulture
        BeforeResGen
        CoreResGen
        AfterResGen
    CompileLicxFiles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接