是否可以从 Visual Studio 中的依赖项目将文件夹中的文件复制到应用程序目录?
Is it possible to copy a folder of files to the application directory from a dependent project in Visual Studio?
在我的解决方案中,我有 项目 A(一个应用程序)和 项目 B(一个 class 库来封装API 功能)。 B 是 A 的引用。
项目A(申请)
- 依赖项 1
- 依赖关系 2
- 项目 B
- /api/files
项目 C(申请)
- 依赖项 1
- 项目 B
- /api/files
项目 B 的 API 要求计算机上存在特定文件夹结构中的几十个文件。我创建了一个 post-build 事件来 xcopy 文件夹从项目到目标目录 - Project.B/bin/Release - 在构建该项目时效果很好。
当我构建 A 时,我希望将文件复制到 Project.A/bin/Release,因此我部署了该 bin 文件夹的内容。目前,构建 A 只会刷新 Project.B/bin/Release
中的文件
我目前最好的猜测是将文件移动到整个解决方案共享的位置,并为每个应用程序创建一个 xcopy 构建事件(有几个项目 A ) 但我不喜欢这样,因为它将文件与项目分离,并且我需要在包含依赖项时添加构建事件。但是,我不确定是否有更好的方法来做到这一点。
如果我理解你的问题,我想你可能想看看这里的 Reserved 和 Well-Known MSBuild Properties:https://msdn.microsoft.com/en-us/library/ms164309.aspx
具体来说,我指的是 MSBuildThisFileDirectory、MSBuildProjectDirectory 等。
使用这些您可以创建一个动态 属性 来确定 API 文件的 output/copy 路径。因此,如果您只是构建项目 B,则文件将转到 Project.B/bin/Release。但是当您构建项目 A 时,文件将转到 Project.A/bin/Release
不知道您的确切设置,这是一个非常基本和通用的示例:
项目 A:
<PropertyGroup>
<ApiCopyPath Condition="'$(ApiCopyPath)' == ''">$(MSBuildThisFileDirectory)bin\Release</ApiCopyPath>
</PropertyGroup>
<Target Name="ProjectA">
...
<MSBuild Projects="ProjectB" Properties="ApiCopyPath=$(ApiCopyPath)" />
</Target>
项目 B:
<PropertyGroup>
<ApiCopyPath Condition="'$(ApiCopyPath)' == ''">$(MSBuildThisFileDirectory)bin\Release</ApiCopyPath>
</PropertyGroup>
<Target Name="ProjectB">
...
<XCopy Target="$(TargetPath)" Destination="$(ApiCopyPath)" />
</Target>
所以每个 "Project A" 都会得到自己的 "Project B" 二进制文件副本。希望对您有所帮助!
在我的解决方案中,我有 项目 A(一个应用程序)和 项目 B(一个 class 库来封装API 功能)。 B 是 A 的引用。
项目A(申请)
- 依赖项 1
- 依赖关系 2
- 项目 B
- /api/files
项目 C(申请)
- 依赖项 1
- 项目 B
- /api/files
项目 B 的 API 要求计算机上存在特定文件夹结构中的几十个文件。我创建了一个 post-build 事件来 xcopy 文件夹从项目到目标目录 - Project.B/bin/Release - 在构建该项目时效果很好。
当我构建 A 时,我希望将文件复制到 Project.A/bin/Release,因此我部署了该 bin 文件夹的内容。目前,构建 A 只会刷新 Project.B/bin/Release
中的文件我目前最好的猜测是将文件移动到整个解决方案共享的位置,并为每个应用程序创建一个 xcopy 构建事件(有几个项目 A ) 但我不喜欢这样,因为它将文件与项目分离,并且我需要在包含依赖项时添加构建事件。但是,我不确定是否有更好的方法来做到这一点。
如果我理解你的问题,我想你可能想看看这里的 Reserved 和 Well-Known MSBuild Properties:https://msdn.microsoft.com/en-us/library/ms164309.aspx
具体来说,我指的是 MSBuildThisFileDirectory、MSBuildProjectDirectory 等。
使用这些您可以创建一个动态 属性 来确定 API 文件的 output/copy 路径。因此,如果您只是构建项目 B,则文件将转到 Project.B/bin/Release。但是当您构建项目 A 时,文件将转到 Project.A/bin/Release
不知道您的确切设置,这是一个非常基本和通用的示例:
项目 A:
<PropertyGroup>
<ApiCopyPath Condition="'$(ApiCopyPath)' == ''">$(MSBuildThisFileDirectory)bin\Release</ApiCopyPath>
</PropertyGroup>
<Target Name="ProjectA">
...
<MSBuild Projects="ProjectB" Properties="ApiCopyPath=$(ApiCopyPath)" />
</Target>
项目 B:
<PropertyGroup>
<ApiCopyPath Condition="'$(ApiCopyPath)' == ''">$(MSBuildThisFileDirectory)bin\Release</ApiCopyPath>
</PropertyGroup>
<Target Name="ProjectB">
...
<XCopy Target="$(TargetPath)" Destination="$(ApiCopyPath)" />
</Target>
所以每个 "Project A" 都会得到自己的 "Project B" 二进制文件副本。希望对您有所帮助!