我有一个问题。我正在使用Team Foundation Server 2017 RTM。我有一个构建定义,将我的应用程序部署到运行Windows Server 2012 R2的开发服务器。我的应用程序允许用户上传图片和PDF文件。完成后,将在我的项目的根目录中创建一个名为Media的文件夹,并将文件上传到此处。问题是,每当我排队一个新的版本,这个文件夹被破坏,所有链接到该媒体不指向任何东西。我是相当新的管理和设置TFS,所以我在想,如果有什么办法,每当我排队一个新的版本,我可以保持我的媒体文件夹的内容。有任何想法吗?我可以在我的项目目录中保存一个文件夹的内容,当我在排队TFS一个新的Build?
回答
根据你的描述,存在生成代理工作目录的概念。如果您set clean=true在构建定义,当你查询一个新的版本,这将删除以前的版本输出。不知道你在哪里Media文件夹的位置,避免创建/把它放在某个目录上生成剂如Build.ArtifactStagingDirectory
在哪里任何文物复制到之前 被推到目的地代理的本地路径。例如:c:\ agent_work \ 1 \ a。
使用此文件夹的典型方法是发布您的生成工件 与复制文件和发布构建构件的步骤。
注:这个目录是每一个新构建之前清除,所以你不必清理自己。
更多关于构建/发布的文件夹路径的详细信息,你可以参考这个tutorial-- Predefined variables
不幸的是,我的媒体文件夹正在与Build.ArtifactStagingDirectory相同的目录中创建,这就是为什么我认为每次排队构建时都会将其擦除。我想我将不得不将我的媒体文件夹移动到驱动器上的其他位置以防止出现这种情况。 –
好了,我花了我整整一天看这个。
在我的C#代码创建一个目录,如下所示:
// -- Create a new file name that is unique
string fileExtension = Path.GetExtension(upload.FileName);
Guid fileGuid = Guid.NewGuid();
string fileName = fileGuid + fileExtension;
// -- Create the directory and upload the image to that directory
string mediaDirectory = Server.MapPath("~/Media/");
Directory.CreateDirectory(mediaDirectory);
string filePath = Path.Combine(mediaDirectory, fileName);
upload.SaveAs(filePath);
我会再设置图像的URL,如媒体对象:
string imageUrl = "/Media/" + fileName;
所以现在,而不是存储的图像在数据库中,我只是将URL存储到图像中。
这是创建应用程序目录的目录在那里我可以存储文件:
这是很酷,但正如我所说,该目录将我每次排队时间销毁一个新的版本。我怎么固定,这是修改哪里存储的图像:
// -- Create a new file name that is unique
string fileExtension = Path.GetExtension(upload.FileName);
Guid fileGuid = Guid.NewGuid();
string fileName = fileGuid + fileExtension;
// -- Create the directory and upload the image to that directory
// The Media directory will be created on the C drive root
string mediaDirectory = @"c:\Media";
Directory.CreateDirectory(mediaDirectory);
string filePath = Path.Combine(mediaDirectory, fileName);
upload.SaveAs(filePath);
现在我的媒体文件夹服务器的C盘上创建,每当我排队一个新的版本也不会被破坏。由于应用程序无法访问应用程序目录之外的文件,因此我需要一种方法来访问Media目录中的这些文件。我所做的就是在IIS中创建一个指向Media文件夹一个新的虚拟文件夹,并赋予它一个别名媒体:
现在,这将让我有机会获得所有那些我把在媒体目录中的文件并在需要时正确显示图像。我真的希望这能帮助别人,因为我花了太多时间看这个。
- 1. 当我添加一个新项目时,我该如何保存在我的listView项目中?
- 2. 在TFS Build(MSBuild)中,如何在我的drop文件夹中只有一个特定项目
- 3. 在htaccess保护的目录中排除一个文件夹
- 4. TFS - 如何克隆一个项目,以便我可以回滚原始内容?
- 5. 我可以将2个目录中的文件集成到一个目录吗?
- 6. 阅读我的项目的webcontent文件夹内的目录的内容
- 7. 我可以添加一个.xap文件到另一个项目
- 8. 我可以创建一个在运行时创建的文件,以显示在Xcode项目的内容中吗?
- 9. 我可以在flexbuilder3中添加一个ftp文件夹来flex项目吗?
- 10. 添加一个新的类文件到我的项目在NetBeans
- 11. UnauthorizedAccessException当保存文件,但可以创建一个目录
- 12. 如何从我的Eclipse项目中排除一些文件夹?
- 13. 如何在TFS团队项目中的新文件夹下移动文件夹?
- 14. 我如何可以调用另一个文件,以我目前的一个PHP
- 15. 我可以使用Visual Studio项目模板创建一个新文件夹
- 16. bundle正在我的项目中安装一个ruby目录
- 17. 我可以在flexbox中生长奇数个项目的第一个项目,而不是最后一个项目
- 18. 我如何到我的项目根目录文件夹
- 19. 在我的项目中的指定文件夹中保存文件
- 20. 我可以为我的项目再次生成一个新的.git文件夹吗?
- 21. TFS - 什么安全措施可以让我在一个项目中添加文件,而不是其他项目?
- 22. 在一个目录内的文件夹中创建多个子文件夹
- 23. 我可以检查具有历史记录的文件夹到另一个TFS
- 24. tfs将文件夹从一个团队项目复制到另一个
- 25. 我开始一个新的VB项目,我可以使用一些指导
- 26. 如何在eclipse中安排我的项目的文件夹项目?
- 27. 我可以在一个Silverlight项目中使用2个App.XAML吗?
- 28. 我可以从我的网站创建一个项目url
- 29. 我可以在TextMate项目中更改我的文件和目录的排序吗?
- 30. 在Python中找到一个目录中的最新文件夹
分享您用于部署应用程序的步骤。 –