我在其中创建了 ac# 项目,我引用了 system.windows.interactivity.dll。
我想知道的是如何设置项目,以便在构建 *.exe 时得到这种结构:
Program Folder
program.exe
Libraries Folder
system.windows.interactivity.dll
我通过在解决方案文件夹下放置一个“库”文件夹尝试了一些实验,使其与项目文件夹处于同一级别。这在“..\Libraries\system.windows.interactivity.dll”的 csproj 文件中给出了一个相对路径,但这不是解决方案,因为当我编译它时,它会使用 exe 将 dll 复制到调试文件夹中并保留它“同一级别”路径结构。
如何更改内容以便将 dll 放置和引用到另一个目录中?
[更新]
所以我在我的项目中修改了以下内容:
1:将参考 system.windows.interactivity.dll 上的“复制本地”属性更改为 False。
2:在csproj文件中添加以下代码,检查输出目录上方是否存在Libraries文件夹,如果不存在则创建然后复制dll。
<Target Name="BeforeBuild">
<MakeDir Directories="$(OutDir)..\Libraries"
Condition="!Exists('$(OutDir)..\Libraries')" />
<Copy SourceFiles="..\Libraries\System.Windows.Interactivity.dll"
DestinationFolder="$(OutDir)..\Libraries"
ContinueOnError="True" />
</Target>
3. 将以下代码添加到App.config 中,为应用程序添加另一个位置来搜索dll。
<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<probing privatePath="..\Libraries"/>
</assemblyBinding>
</runtime>
</configuration>
我的发现:
在构建应用程序时,所有文件都在我想要的位置,就像我原始帖子中的结构一样。当我尝试从输出目录运行 exe 时,它找不到 dll。
[/更新]