【发布时间】:2013-06-24 02:31:29
【问题描述】:
我正在试用 LabView,尝试将其与 .NET 结合使用。我设法创建了一个小应用程序,它可以读取仪表、转换 .NET 中的值并在另一个仪表上显示结果。
问题是当我尝试添加到 .NET 项目并重建时,DLL 被锁定,我无法覆盖它。 NI claims that LabView uses Shadow Copying。但如果这是真的,我的 DLL 不应该被锁定。
有什么方法可以让 LabView 停止锁定 DLL?除了每次我想重建时都退出 LabView,这似乎是一个乏味的修复。
【问题讨论】:
-
afaik 除了关闭 Labview 之外别无他法。至少这是我多年来一直使用的。这也是有道理的:如果使用 dll 的 vi 是打开的,你如何期望它不锁定 dll?
-
@stijn,正如我上面提到的,NI 声称 LabView 使用影子复制。如果这是真的,那么原始 DLL 不应该被锁定,因为 LabView 不应该使用它;它应该使用它制作的副本。
-
您可能已经尝试过,但请确保在您的 LabVIEW.ini 文件(存储在 labview 目录中)中,
AppDomainSetup_ShadowCopyFilesINI 标志设置为True。跨度> -
@Campari,我没试过。所以我做了。我的 LabView.ini 文件中没有该行,所以我尝试添加它,但它仍然做同样的事情;它锁定 DLL。我把它放在 .ini 的一行上:
AppDomainSetup_ShadowCopyFiles=True我也尝试将它作为字符串 after reading this:AppDomainSetup_ShadowCopyFiles="True"那也没用。在这方面我可以尝试更多的想法吗? -
@Kyralessa 这可能是因为您的版本早于 LabVIEW 2011。但从技术上讲,默认行为应该是 .NET Framework 在锁定之前将 DLL 复制到临时目录
\Local Settings\Application Data\assembly\dll2。也许您可以尝试使用不同版本的 LabVIEW。