我在StackOverflow上找到了其他帖子来处理我遇到的问题,例如:
的MSBuild:部署未包含在项目文件以及包含在MSBuild的文件不是项目的一部分, 我想和大家分享,我是能够阅读这些文章之后创建并寻求一些帮助,为什么代码它可能不起作用?
详细说明究竟什么不是错,我打算做什么.我正在使用Visual Studio 2012和TFS 2012.
我有一个名为CreateMyFiles.bat的批处理文件,我想要执行此操作然后获取它输出的文件(它将它们输出到我的Includes/Javascript/Bundled文件夹)并将它们包含在MSBuild的部分构建中(以便将它们部署到目标IIS服务器).
当我在本地Visual Studio中编辑我的本地.csproj并将下面的代码添加到文件的底部并重新加载时,我能够右键单击我的web项目,选择"发布",然后选择我的本地文件发布配置文件确实将我的文件部署到正确的位置.有效!
然后我将我的代码检入TFS,然后转到TFS上的"构建",并排队新的构建.果然,我能够看到文件输出到构建服务器上的同一目录.现在,我不是100%肯定MSBuild,但我注意到就像我在本地发布时一样,它也在构建服务器上创建了一个_publishedWebsite文件夹(源代码上面的目录).问题是,在这个已发布的网站文件夹中,我手动创建的文件不存在.此外,在构建完成后转到目标Web服务器遗憾的是没有我想要的文件.
所以看起来如果我手动选择发布,下面的代码可以工作,但如果我要用TFS对构建进行排队,它就不起作用了.MSBuild是否使用发布?这可能是它在下面不起作用的原因吗?
这是我放在.csproj文件中的代码:
<_CustomFiles Include="Includes\JavaScript\Bundled\*" /> Includes\JavaScript\Bundled\*%(Filename)%(Extension) CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn); CustomCollectFiles; $(CopyAllFilesToSingleFolderForPackageDependsOn);
我真的坚持这个,并想要求一些帮助,说明为什么文件可能不会发生.我怀疑MSBuild不使用发布,这就是它在本地工作的原因(因为我选择发布)?
非常感谢你的帮助
更新 根据下面的评论尝试了这一点,但这次文件甚至没有出现(所以它现在似乎甚至没有运行任务).知道为什么吗?我打字了吗?
<_CustomFiles Include="Includes\JavaScript\Bundled\*" /> Includes\JavaScript\Bundled\*%(Filename)%(Extension) CustomCollectFiles; $(PipelineCollectFilesPhaseDependsOn);
更新2 当我获取上面的代码,并将其放入我的pubxml文件然后执行实际发布时,它可以工作,但据我所知,我们的过程是从TFS排队构建.简单地对构建进行排队是否可以挂钩到上面的代码块?或者我需要发布?