我使用的MSBuild建立一个Web应用程序项目,并添加参数创建包文件。 所有这一切都还是不错的。 我得到了两个文件夹_PublishedWebSites
输出:
AppName
AppName_Package
在ApplicationName
的文件夹,整个网站是存在的,我可以在这个文件夹上简单地复制到网站,它将会运行。
在包文件夹中我已经得到了预期的5个文件:
AppName.deploy.cmd
AppName.-readme.txt
AppName.SetParameters.xml
AppName.SourceManifest.xml
AppName.zip
然而,当部署包,Web应用程序的DLL( AppName.dll
)丢失,因为有一些其他的重要参考依赖。
检查包装本身并没有透露这些文件其实都是从web应用程序缺少bin
目录。
这是很奇怪的,考虑到文件都在根AppName
文件夹,而不是在发现包AppName_Package
文件夹。
唯一MSDeploy有关修改我做的是,我重写CopyAllFilesToSingleFolderForPackageDependsOn
目标从库项目中的一些处理程序进行复制,而这一切都很好地工作。
<PropertyGroup>
<CopyAllFilesToSingleFolderForPackageDependsOn>
CustomCollectFiles;
$(CopyAllFilesToSingleFolderForPackageDependsOn);
</CopyAllFilesToSingleFolderForPackageDependsOn>
</PropertyGroup>
<Target Name="CustomCollectFiles">
<ItemGroup>
<_CustomFiles Include="..\Libraries\CodeLibrary1\**\*.ashx" />
<FilesForPackagingFromProject Include="%(_CustomFiles.Identity)">
<DestinationRelativePath>$(ProjectDir)%(RecursiveDir)%(Filename)%(Extension)</DestinationRelativePath>
</FilesForPackagingFromProject>
</ItemGroup>
</Target>
所以,我不能确定为什么Web应用程序的DLL,只有少数其他(仅供参考),DLL是从去除bin
目录在打包过程(但不是全部-也许3%)。
任何想法,我应该在日志文件中找?
编辑:(回应赛义德):
我很欣赏你回答我的职务。 不幸的是我不知道我们是在同一页上。 就像我说的,我可能没有解释我的问题不够好,其实线索别人对我的问题到底是什么。 让我再试一次澄清
获取复制到我的web应用程序的外部文件不是问题。 我明白了我的职位,扫描,看到太常见“CopyAllFilesToSingleFolderForPackageDependsOn”元素掀起了几个红旗,报警铃和whisles。 。 这似乎是人们疲于应付常见的事情,正如你指出的那样,出现了一些问题,它正在执行。 这对我的工作确定。
我的问题更多的是与项目中引用的DLL,而且最重要的应用程序DLL本身不被复制。
今天各地更多的调整已显露一些我不知道的。 例如:
开球上TFS一个生成输出有两件事情:
从TFS源输出到源目录(SourceDir)
- 这仅包含了什么签入TFS输出
- 这不包括项目或文件引用,只是什么TFS承诺
构建的输出到两个文件夹
- 二进制文件(包括项目和文件引用)
- 源(仅包括什么/致力在TFS)
二进制里面我找到_publishedWebsites文件夹,以及所有项目和文件引用,而内源也有刚刚被签入TFS文件。
我的问题或困惑,在想,当我通过下面的参数的MSBuild参数,它将采取从构建(_PublishedWebsites)输出,并使用这些文件来创建包。 它没有做到这一点。
实际过程建立基于源文件夹中的文件的包。 所以,这里是我的困境/困惑,因为我没有犯我的应用程序的DLL到源,它没有被列入包,因此没有被被罚在测试服务器上测试网站。
/p:DeployOnBuild=True /p:DeployTarget=MsDeployPublish /p:CreatePackageOnPublish=True /p:MSDeployPublishMethod=RemoteAgent /p:MSDeployServiceUrl=http://<mytestsite> /p:DeployIisAppPath="<AppName>" /p:UserName=<domain\user> /p:Password=<mypassword> /p:SkipExtraFilesOnServer=false /p:AllowUntrustedCertificate=True
为了总结这件事,有一次我“结帐编辑”我的开发机器上我的应用程序的DLL,并将其编译的解决方案,最后提交应用程序的DLL到源代码控制,那么它被包含在包,因为它是作为只是一个源项。
所以,我想这与我的不理解如何让TFS的输出构筑成源文件夹中,并获得,其中包括成msdeploy使用的包装故障。
有可能是一些非常基本的,我错过了或者只是掠过 - 不理解的是,包创建是从源文件夹,而不是_PublishedWebsites文件夹。 我也不知道如何获得的MSBuild编译的应用程序的DLL和项目中引用的DLL,进入我的包 - 在源代码控制更换致力于源项目。
我希望这不是你完全是浪费时间,因为我错过了
source=<some-parameter>
某处。
我很感激你能告诉我到任何现有来源指出,已经解释这一点我应该能够绕过它我的头,并得到这个工作在哪里。 或者,如果它很容易,只是告诉我这里。