2017-07-18 26 views
2

我有一个问题。我正在使用Team Foundation Server 2017 RTM。我有一个构建定义,将我的应用程序部署到运行Windows Server 2012 R2的开发服务器。我的应用程序允许用户上传图片和PDF文件。完成后,将在我的项目的根目录中创建一个名为Media的文件夹,并将文件上传到此处。问题是,每当我排队一个新的版本,这个文件夹被破坏,所有链接到该媒体不指向任何东西。我是相当新的管理和设置TFS,所以我在想,如果有什么办法,每当我排队一个新的版本,我可以保持我的媒体文件夹的内容。有任何想法吗?我可以在我的项目目录中保存一个文件夹的内容,当我在排队TFS一个新的Build?

+1

分享您用于部署应用程序的步骤。 –

回答

0

根据你的描述,存在生成代理工作目录的概念。如果您set clean=true在构建定义,当你查询一个新的版本,这将删除以前的版本输出。不知道你在哪里Media文件夹的位置,避免创建/把它放在某个目录上生成剂如Build.ArtifactStagingDirectory

在哪里任何文物复制到之前 被推到目的地代理的本地路径。例如:c:\ agent_work \ 1 \ a。

使用此文件夹的典型方法是发布您的生成工件 与复制文件和发布构建构件的步骤。

注:这个目录是每一个新构建之前清除,所以你不必清理自己。

更多关于构建/发布的文件夹路径的详细信息,你可以参考这个tutorial-- Predefined variables

+0

不幸的是,我的媒体文件夹正在与Build.ArtifactStagingDirectory相同的目录中创建,这就是为什么我认为每次排队构建时都会将其擦除。我想我将不得不将我的媒体文件夹移动到驱动器上的其他位置以防止出现这种情况。 –

1

好了,我花了我整整一天看这个。

在我的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存储到图像中。


这是创建应用程序目录的目录在那里我可以存储文件:

app directory

这是很酷,但正如我所说,该目录将我每次排队时间销毁一个新的版本。我怎么固定,这是修改哪里存储的图像:

// -- 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文件夹一个新的虚拟文件夹,并赋予它一个别名媒体:

IIS Virtual Directory

现在,这将让我有机会获得所有那些我把在媒体目录中的文件并在需要时正确显示图像。我真的希望这能帮助别人,因为我花了太多时间看这个。

相关问题