Andrew_STOP_RU_AGRESSION_IN_UA Asked:2020-12-11 18:52:23 +0000 UTC2020-12-11 18:52:23 +0000 UTC 2020-12-11 18:52:23 +0000 UTC 构建 Visual Studio 项目。如何将所有依赖的 dll 配置为转储到文件夹中? 772 我使用 Visual Studio 用 C# 编写。我希望程序所在的文件夹在编译后更加结构化。 在这种情况下 - 以便将所有 DLL 转储到一个文件夹中,例如,称为“Libs”。 有没有办法像这样设置它? 理想情况下,编译后,我想得到以下内容: c# 1 个回答 Voted Best Answer Pavel Mayorov 2020-12-11T19:39:48Z2020-12-11T19:39:48Z 您需要为项目文件中DestinationSubDirectory的元素添加元数据。ReferenceCopyLocalPaths但是,由于这些元素不是静态的,而是在构建过程中创建的,因此您需要通过ItemDefinitionGroup. 使用任意文本编辑器打开项目文件(如果您先卸载项目,然后以 XML 格式打开,则可以直接在工作室中打开)并在末尾添加: <ItemDefinitionGroup> <ReferenceCopyLocalPaths> <DestinationSubDirectory>lib\</DestinationSubDirectory> </ReferenceCopyLocalPaths> </ItemDefinitionGroup> 现在我们需要确保在项目启动时找到这些库。为此,您需要修复它app.config(只需确保配置中没有两个运行时部分): <runtime> <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> <probing privatePath="lib" /> </assemblyBinding> </runtime> UPD如果您使用的是 MSBuild Core(称为 via dotnet),则 ItemDefinitionGroup 方法将破坏您的依赖项搜索(请参阅错误https://github.com/dotnet/sdk/issues/10859) 但是这个解决方案应该有效: <Target Name="SetupDestinationSubDirectory" AfterTargets="ResolveAssemblyReferences"> <ItemGroup> <ReferenceCopyLocalPaths Update="*" DestinationSubDirectory="lib/" /> </ItemGroup> </Target>
您需要为项目文件中
DestinationSubDirectory的元素添加元数据。ReferenceCopyLocalPaths但是,由于这些元素不是静态的,而是在构建过程中创建的,因此您需要通过ItemDefinitionGroup.使用任意文本编辑器打开项目文件(如果您先卸载项目,然后以 XML 格式打开,则可以直接在工作室中打开)并在末尾添加:
现在我们需要确保在项目启动时找到这些库。为此,您需要修复它
app.config(只需确保配置中没有两个运行时部分):UPD如果您使用的是 MSBuild Core(称为 via
dotnet),则 ItemDefinitionGroup 方法将破坏您的依赖项搜索(请参阅错误https://github.com/dotnet/sdk/issues/10859)但是这个解决方案应该有效: