我想将我的包(应用程序和 lib 的组合)变成一个包。
我的情况
AppX
只是一个script.dart
在 app 的根目录中创建文件的文件X
。
运行良好!
目前为了测试,我创建了一个新应用程序并在文件夹中APP
复制应用程序。X
APP/packages
但是当我APP/packages/X/script.dart
通过 darteditor 运行时,我得到了
cant open file /package/X/c:/APP/X/script.dart
这是有线的,因为我只是右键单击script.dart
并运行..这是一个错误的路径错误吗?
另外我检查了如果我script.dart
从APP
根文件夹中运行会发生什么,我看到脚本会打开,但是一旦我尝试创建/写入文件
file.writeAsStringSync(contentString, encoding: Encoding.ASCII);
我明白了
Breaking on exception: FileException: Cannot open file 'C:\APP' (OS Error: Access is denied.
就文件系统用户权限而言,开发包和将其用作 lib 包有什么区别?
目前我的结构是
app/bin/script.dart
(用户执行的脚本)
app/tool/helperScript.dart
(bin中脚本调用的函数)
未来的结构还将包括
app/lib/lib.dart
和
app/lib/src/libHelper.dart
更新 当前解决方法 在我的另一个问题中,如何测试 dart pub 包有人回答:
如此处所示,我可以在 pubspec 文件中使用路径选项。
所以我不会将我的应用程序放在用户包文件夹中
- 创建一个应用程序包,
- 用户在他的 pubspec 中添加我的应用程序的路径(在控制台中提供路径)
-user 执行我的脚本
此解决方法修复了我的文件访问问题,但由于用户应用程序现在将 path
在 pubspec
1.用户不能部署他的包(不编辑他的pubspec)
2.用户必须将我的控制台应用程序复制到他运行他的应用程序的服务器上(嗯,但我现在在想,因为本地机器只是开发,他无论如何都必须在他的生产服务器上做同样的事情)所以我想目前我会坚持这种方法,但是
我仍然有兴趣
如何从 lib 包中访问绝对应用程序根路径
谢谢
附言。
由于当前的解决方案是create application package and let the user tell you the path
并且由于问题已经发展,我将标题从
How to access app root path from inside a combined app/lib package
至
How to create a combined Command-line/Library package